Redis五大数据类型

栏目: 数据库 · 发布时间: 5年前

内容简介:DbsizeFlushdbFl

Redis五大数据类型

补充:常用命令

Ping    ping下redis

Dbsize 查看当前数据库的 key的数量

Select 1 切换到下标为1的数据库中

Flushdb      清空当前库 key

Fl ushall  清空 全部库 key

Redis键的操作(常用):

查看当前数据库的所有 key:

Keys *

判断当前 key是否存在:

exists name

将当前 key移动到2号库中:

Move name 2

设置 key在6秒后过期:

expire name 6

查看当前 key还有多久过期

ttl name

查看当前 key是什么结构的类型

type name

String 类型(常用)

String是 redis 最基本的类型,可以理解成一个key对应一个value。

String类型是二进制安全带额,意思是redis的string可以包含任何数据,比如jpg图片或者序列化对象。

一个 redis中字符串value最多可以是512M

操作:

set name oyr: 给键 name设置值为oyr

get name:   获取键 name的值

del name:   删除建为 name值

append name 123: name对应的值后面追加123

strlen name: 得到当前 name对应的值的长度

incr age: age+1一定要是数字才能操作

incrby age 10: age+10

decr age: age-1一定要是数字才能操作

decrby age 10: age-10

setex name 10 oyr:

set with expire)

设置 key为name,过期时间为10秒,值为oyr

sexnx name ooo:

sex if not exist)

设置键位 name,值为ooo,只有不存在的时候才会设置进去

mset k1 v1 k2 v2 k3 v3: 一次设置多个值

mget k1 k2 k3: 一次获取多个值

msetnx k1 v1 k2 v2 k3 v3: 一次设置多个值,如果有一个键是存在的那么全部失效。

Hash 类型(常用)

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

类似 Java里面的Map<String,Object>

K - V模式不变,但V是一个键值对

操作:

1)hset

hset user name oyr 给键 user的name属性设置值

2)hget

hget user name 获取键 user的name值

3)hmset

hmset user age 18 sex nan   同时设置多个值

4)hmget

hmget user name age sex 同时获取多个属性值

5)hgetall

h getall  user 获取键 user中的所有键和值

6)hdel

hdel user name 删除键 user中的name属性

7)hlen

hlen user 获取键 user下有几个属性

8)hexists

hexists user nane 判断键 user下是否有name属性

9)hkeys

hkys user 获取键 user下的所有属性

10)hvals

hvals user   获取键 user下的所有值

11)hsetnx

hsetnx user name "oyr" 如果 user对象里存在 name 属性,则不做操作,不存 在,创建并赋值。

(12)hincrby

hincrby  user age 10 给键 user里的age 属性添加10

Lists 类型(双向链表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

它的底层实际是个链表 而且是双向链表。注意:先进后出,后进先出

操作:

lpush list1 a b c d list1链表添加数据a b c d,从头部添加

lrange list1 0 -1 获取 list1链表所有数据

rpush list2 1 2 3 给链表 list2尾部插入元素

lpop list1 出栈 mylist,出栈后,元素消失(从头部出)

rpop list1 出栈 mylist,出栈后,元素消失(从尾部出)

lindex list1 3 获取链表的 3索引位置的值

list1 获取 list1 链表的长度

lset list2 2 s 给链表索引 2的位置设置值为 s

lrem list3 2 d 删除链表 2个d元素

ltrim list2 2 5 从索引 2截取到索引5,其他元素被遗弃

linsert list2 before/after  s u 在链表 f元素前面或者后面插入 h 元素

rpoplpush list1 list2 list1链表中尾部出站,出栈元素添加给list2链表

lists性能总结:

它是一个字符串链表, left、right都可以插入添加;

如果键不存在,创建新的链表;

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

Set 类型(不能重复)

Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,

操作:

sadd set1 a b c d set1集合添加元素

smembers set1 查看 set1集合的所有元素

sismember set1 a 判断 set1集合中是否有a元素

scard set1 获取集合 set1 的元素个数

srem set1 a 删除集合 set1中的元素(可以一次删除多个)

srandmember set2 3 在集合 set2中随机出3个元素

diff set3 set4 差集,取 set3中存在但是set4中不存在的元素

sinter set3 set4 交集,取 set3和set4都存在的元素

sunion set3 set4 并集

Sortedsets 类型

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

操作:

zadd zset1 60 a 70 b 80 c 90 d 100 f zset1 有序集合设置元素,同时 设置元素分数。

zrange zset1 0 -1 withscores 查询集合所有元素 ,0:开始,-1:结 ,withscores显示分数

zrange zset1 0 2 查询集合下标 0到下标2的元素

zcount zset1 70 90 统计分数在 70 到 90 之间元素,闭区间。

zcount zset1 (70 90 统计分数在 70到90之间元素,左边开区间,右边闭区间

zcount zset1 -inf +inf 统计所有元素  -inf:最小值 +inf:最大值

根据分数查询 12到19集合,从坐标0开始。每页显示1条,12-19都是闭区间:

zrangebyscore mysset 12 19 withscores limit 0 1

zrem zset1 a b 集合删除元素 a b

五大数据类型操作结束


以上所述就是小编给大家介绍的《Redis五大数据类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript忍者秘籍

JavaScript忍者秘籍

John Resig、Bear Bibeault / 徐涛 / 人民邮电出版社 / 2015-10 / 69.00

JavaScript语言非常重要,相关的技术图书也很多,但没有任何一本书对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,也没有任何一本书讲述跨浏览器代码的编写。本书是jQuery库创始人编写的一本深入剖析JavaScript语言的书。 本书共分四个部分,从准入训练、见习训练、忍者训练和火影训练四个层次讲述了逐步成为JavaScript高手的全过程。全书从高级We......一起来看看 《JavaScript忍者秘籍》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具