将来的你
一定会感谢现在拼命努力的自己

Redis数据类型详解

redis 数据类型

参考资料:http://www.redis.cn/topics/data-types.html

字符串(string)

字符串是所有编程语言中最常见的和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有
的key的类型都是字符串。常用于保存Session信息场景,此数据类型比较常用

添加一个key

127.0.0.1:6379> set key1 value1 OK 127.0.0.1:6379> get key1 "value1" 127.0.0.1:6379> TYPE key1 string 127.0.0.1:6379> SET title1 ceo ex 3 #设置自动过期时间3s OK 127.0.0.1:6379> set NAME wang OK 127.0.0.1:6379> get NAME "wang" 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> set name mage OK 127.0.0.1:6379> get name "mage" 127.0.0.1:6379> get NAME "wang"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 127.0.0.1 : 6379 > set key1 value1 OK 127.0.0.1 : 6379 > get key1 "value1" 127.0.0.1 : 6379 > TYPE key1 string 127.0.0.1 : 6379 > SET title1 ceo ex 3 #设置自动过期时间3s OK 127.0.0.1 : 6379 > set NAME wang OK 127.0.0.1 : 6379 > get NAME "wang" 127.0.0.1 : 6379 > get name ( nil ) 127.0.0.1 : 6379 > set name mage OK 127.0.0.1 : 6379 > get name "mage" 127.0.0.1 : 6379 > get NAME "wang"
获取一个key的内容

127.0.0.1:6379> get key1 "value1"

1 2 127.0.0.1 : 6379 > get key1 "value1"
删除一个和多个key

127.0.0.1:6379> DEL key1 (integer) 1 127.0.0.1:6379> DEL key1 key2 (integer) 2

1 2 3 4 5 127.0.0.1 : 6379 > DEL key1 ( integer ) 1   127.0.0.1 : 6379 > DEL key1 key2 ( integer ) 2
批量设置多个key

127.0.0.1:6379> MSET key1 value1 key2 value2 OK

1 2 127.0.0.1 : 6379 > MSET key1 value1 key2 value2 OK
批量获取多个key

127.0.0.1:6379> MGET key1 key2 1) "value1" 2) "value2" 127.0.0.1:6379> KEYS n* 1) "n1" 2) "name" 127.0.0.1:6379> KEYS * 1) "k2" 2) "k1" 3) "key1" 4) "key2" 5) "n1" 6) "name" 7) "k3" 8) "title"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 127.0.0.1 : 6379 > MGET key1 key2 1 ) "value1" 2 ) "value2"   127.0.0.1 : 6379 > KEYS n* 1 ) "n1" 2 ) "name"   127.0.0.1 : 6379 > KEYS * 1 ) "k2" 2 ) "k1" 3 ) "key1" 4 ) "key2" 5 ) "n1" 6 ) "name" 7 ) "k3" 8 ) "title"
追加数据

127.0.0.1:6379> APPEND key1 " append" (integer) 12 127.0.0.1:6379> get key1 "value1 append"

1 2 3 4 127.0.0.1 : 6379 > APPEND key1 " append" ( integer ) 12 127.0.0.1 : 6379 > get key1 "value1 append"
数值递增

127.0.0.1:6379> set num 10 #设置初始值 OK 127.0.0.1:6379> INCR num (integer) 11 127.0.0.1:6379> get num "11"

1 2 3 4 5 6 127.0.0.1 : 6379 > set num 10 #设置初始值 OK 127.0.0.1 : 6379 > INCR num ( integer ) 11 127.0.0.1 : 6379 > get num "11"
数值递减

127.0.0.1:6379> set num 10 OK 127.0.0.1:6379> DECR num (integer) 9 127.0.0.1:6379> get num "9"

1 2 3 4 5 6 127.0.0.1 : 6379 > set num 10 OK 127.0.0.1 : 6379 > DECR num ( integer ) 9 127.0.0.1 : 6379 > get num "9"
返回字符串key长度

127.0.0.1:6379> SET name wang OK 127.0.0.1:6379> STRLEN name (integer) 4 127.0.0.1:6379> APPEND name " xiaochun" (integer) 13 127.0.0.1:6379> GET name "wang xiaochun" 127.0.0.1:6379> STRLEN name (integer) 13

1 2 3 4 5 6 7 8 9 10 127.0.0.1 : 6379 > SET name wang OK 127.0.0.1 : 6379 > STRLEN name ( integer ) 4 127.0.0.1 : 6379 > APPEND name " xiaochun" ( integer ) 13 127.0.0.1 : 6379 > GET name "wang xiaochun" 127.0.0.1 : 6379 > STRLEN name ( integer ) 13
判断key是否存在

127.0.0.1:6379> SET name wang ex 10 OK 127.0.0.1:6379> EXISTS NAME #大小写敏感 (integer) 0 127.0.0.1:6379> EXISTS name (integer) 1 127.0.0.1:6379> EXISTS name #过几秒再看 (integer) 0

1 2 3 4 5 6 7 8 127.0.0.1 : 6379 >    SET name wang ex 10 OK 127.0.0.1 : 6379 > EXISTS NAME #大小写敏感 ( integer ) 0 127.0.0.1 : 6379 > EXISTS name ( integer ) 1 127.0.0.1 : 6379 > EXISTS name    #过几秒再看 ( integer ) 0
查看key的过期时间

ttl #查看key的剩余生存时间 -1 #负一为永不过期,默认创建的key是永不过期,重新对key赋值,也会从有剩余生命周期变成永不过期 -2 #为没有此key num #key的剩余有效期 127.0.0.1:6379> TTL key1 (integer) -1 127.0.0.1:6379> SET name wang EX 100 OK 127.0.0.1:6379> TTL name (integer) 96 127.0.0.1:6379> TTL name (integer) 93 127.0.0.1:6379> SET name mage #重新设置,默认永不过期 OK 127.0.0.1:6379> TTL name (integer) -1 127.0.0.1:6379> SET name wang EX 200 OK 127.0.0.1:6379> TTL name (integer) 198 127.0.0.1:6379> GET name "wang"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ttl #查看key的剩余生存时间 - 1 #负一为永不过期,默认创建的key是永不过期,重新对key赋值,也会从有剩余生命周期变成永不过期 - 2 #为没有此key num #key的剩余有效期   127.0.0.1 : 6379 > TTL key1 ( integer ) - 1 127.0.0.1 : 6379 > SET name wang EX 100 OK 127.0.0.1 : 6379 > TTL name ( integer ) 96 127.0.0.1 : 6379 > TTL name ( integer ) 93 127.0.0.1 : 6379 > SET name mage #重新设置,默认永不过期 OK 127.0.0.1 : 6379 > TTL name ( integer ) - 1 127.0.0.1 : 6379 > SET name wang EX 200 OK 127.0.0.1 : 6379 > TTL name ( integer ) 198 127.0.0.1 : 6379 > GET name "wang"
重新设置key的过期时间

127.0.0.1:6379> TTL name (integer) 148 127.0.0.1:6379> EXPIRE name 1000 (integer) 1 127.0.0.1:6379> TTL name (integer) 999 127.0.0.1:6379>

1 2 3 4 5 6 7 127.0.0.1 : 6379 > TTL name ( integer ) 148 127.0.0.1 : 6379 > EXPIRE name 1000 ( integer ) 1 127.0.0.1 : 6379 > TTL name ( integer ) 999 127.0.0.1 : 6379 >
取消key的过期时间

127.0.0.1:6379> TTL name (integer) 999 127.0.0.1:6379> PERSIST name (integer) 1 127.0.0.1:6379> TTL name (integer) -1

1 2 3 4 5 6 127.0.0.1 : 6379 > TTL name ( integer ) 999 127.0.0.1 : 6379 > PERSIST name ( integer ) 1 127.0.0.1 : 6379 > TTL name ( integer ) - 1
列表(list)

列表是一个双向可读写的管道,其头部是左侧,尾部是右侧,一个列表最多可以包含2^32-1(4294967295)个元素,下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,元素值可以重复,常用于存入日志等场景,此数据类型比较常用

生成列表并插入数据

#从左边添加数据,已添加的需向右移 127.0.0.1:6379> LPUSH list1 jack tom john #根据顺序逐个写入list1,最后的john会在列表的最左侧。 (integer) 3 127.0.0.1:6379> TYPE list1 list

1 2 3 4 5 #从左边添加数据,已添加的需向右移 127.0.0.1 : 6379 > LPUSH list1 jack tom john #根据顺序逐个写入list1,最后的john会在列表的最左侧。 ( integer ) 3 127.0.0.1 : 6379 > TYPE list1 list
向列表追加数据

127.0.0.1:6379> LPUSH list1 tom (integer) 2 #从右边添加数据,已添加的向左移 127.0.0.1:6379> RPUSH list1 jack (integer) 3

1 2 3 4 5 127.0.0.1 : 6379 > LPUSH list1 tom ( integer ) 2 #从右边添加数据,已添加的向左移 127.0.0.1 : 6379 > RPUSH list1 jack ( integer ) 3
获取列表长度

127.0.0.1:6379> LLEN list1 (integer) 3

1 2 127.0.0.1 : 6379 > LLEN list1 ( integer ) 3
获取列表指定位置数据

127.0.0.1:6379> LPUSH list1 a b c d (integer) 4 127.0.0.1:6379> LINDEX list1 0 #获取0编号的元素 "d" 127.0.0.1:6379> LINDEX list1 3 "a" 127.0.0.1:6379> #元素从0开始编号 127.0.0.1:6379> LPUSH list1 a b c d (integer) 4 127.0.0.1:6379> LRANGE list1 1 2 1) "c" 2) "b" 127.0.0.1:6379> LRANGE list1 0 3 #所有元素 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> LRANGE list1 0 -1 #所有元素 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> RPUSH list2 zhang wang li zhao (integer) 4 127.0.0.1:6379> LRANGE list2 1 2 #指定范围 1) "wang" 2) "li" 127.0.0.1:6379> LRANGE list2 2 2 #指定位置 1) "li" 127.0.0.1:6379> LRANGE list2 0 -1 #所有元素 1) "zhang" 2) "wang" 3) "li" 4) "zhao"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 127.0.0.1 : 6379 > LPUSH list1 a b c d ( integer ) 4 127.0.0.1 : 6379 > LINDEX list1 0 #获取0编号的元素 "d" 127.0.0.1 : 6379 > LINDEX list1 3 "a" 127.0.0.1 : 6379 >   #元素从0开始编号 127.0.0.1 : 6379 > LPUSH list1 a b c d ( integer ) 4 127.0.0.1 : 6379 > LRANGE list1 1 2 1 ) "c" 2 ) "b" 127.0.0.1 : 6379 > LRANGE list1 0 3    #所有元素 1 ) "d" 2 ) "c" 3 ) "b" 4 ) "a" 127.0.0.1 : 6379 > LRANGE list1 0 - 1    #所有元素 1 ) "d" 2 ) "c" 3 ) "b" 4 ) "a"   127.0.0.1 : 6379 > RPUSH list2 zhang wang li zhao ( integer ) 4 127.0.0.1 : 6379 > LRANGE list2 1 2 #指定范围 1 ) "wang" 2 ) "li" 127.0.0.1 : 6379 > LRANGE list2 2 2 #指定位置 1 ) "li" 127.0.0.1 : 6379 > LRANGE list2 0 - 1    #所有元素 1 ) "zhang" 2 ) "wang" 3 ) "li" 4 ) "zhao"  
移除列表数据

127.0.0.1:6379> LPUSH list1 a b c d (integer) 4 127.0.0.1:6379> LRANGE list1 0 3 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> LPOP list1 #弹出左边元素,即删除第一个 "d" 127.0.0.1:6379> LLEN list1 (integer) 3 127.0.0.1:6379> LRANGE list1 0 2 1) "c" 2) "b" 3) "a" 127.0.0.1:6379> RPOP list1 #弹出右边元素,即删除最后一个 "a" 127.0.0.1:6379> LLEN list1 (integer) 2 127.0.0.1:6379> LRANGE list1 0 1 1) "c" 2) "b" #LTRIM 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 127.0.0.1:6379> LLEN list1 (integer) 4 127.0.0.1:6379> LRANGE list1 0 3 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> LTRIM list1 1 2 #只保留1,2号元素 OK 127.0.0.1:6379> LLEN list1 (integer) 2 127.0.0.1:6379> LRANGE list1 0 1 1) "c" 2) "b" #删除list 127.0.0.1:6379> DEL list1 (integer) 1 127.0.0.1:6379> EXISTS list1 (integer) 0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 127.0.0.1 : 6379 > LPUSH list1 a b c d ( integer ) 4 127.0.0.1 : 6379 > LRANGE list1 0 3 1 ) "d" 2 ) "c" 3 ) "b" 4 ) "a" 127.0.0.1 : 6379 > LPOP list1 #弹出左边元素,即删除第一个 "d" 127.0.0.1 : 6379 > LLEN list1 ( integer ) 3 127.0.0.1 : 6379 > LRANGE list1 0 2 1 ) "c" 2 ) "b" 3 ) "a" 127.0.0.1 : 6379 > RPOP list1    #弹出右边元素,即删除最后一个 "a" 127.0.0.1 : 6379 > LLEN list1 ( integer ) 2 127.0.0.1 : 6379 > LRANGE list1 0 1 1 ) "c" 2 ) "b"   #LTRIM  对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 127.0.0.1 : 6379 > LLEN list1 ( integer ) 4 127.0.0.1 : 6379 > LRANGE list1 0 3 1 ) "d" 2 ) "c" 3 ) "b" 4 ) "a" 127.0.0.1 : 6379 > LTRIM list1 1 2 #只保留1,2号元素 OK 127.0.0.1 : 6379 > LLEN list1 ( integer ) 2 127.0.0.1 : 6379 > LRANGE list1 0 1 1 ) "c" 2 ) "b"   #删除list 127.0.0.1 : 6379 > DEL list1 ( integer ) 1 127.0.0.1 : 6379 > EXISTS list1 ( integer ) 0
集合(set)

Set 是 String 类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据,可以在两个不同
的集合中对数据进行对比并取值,常用于取值判断,统计,交集等场景

生成集合key

127.0.0.1:6379> SADD set1 v1 (integer) 1 127.0.0.1:6379> SADD set2 v2 v4 (integer) 2 127.0.0.1:6379> TYPE set1 set 127.0.0.1:6379> TYPE set2 set

1 2 3 4 5 6 7 8 127.0.0.1 : 6379 > SADD set1 v1 ( integer ) 1 127.0.0.1 : 6379 > SADD set2 v2 v4 ( integer ) 2 127.0.0.1 : 6379 > TYPE set1 set 127.0.0.1 : 6379 > TYPE set2 set
追加数值

#追加时,只能追加不存在的数据,不能追加已经存在的数值 127.0.0.1:6379> SADD set1 v2 v3 v4 (integer) 3 127.0.0.1:6379> SADD set1 v2 #没有追加成功 (integer) 0 127.0.0.1:6379> TYPE set1 set 127.0.0.1:6379> TYPE set2 set

1 2 3 4 5 6 7 8 9 #追加时,只能追加不存在的数据,不能追加已经存在的数值 127.0.0.1 : 6379 > SADD set1 v2 v3 v4 ( integer ) 3 127.0.0.1 : 6379 > SADD set1 v2 #没有追加成功 ( integer ) 0 127.0.0.1 : 6379 > TYPE set1 set 127.0.0.1 : 6379 > TYPE set2 set
查看集合的所有数据

127.0.0.1:6379> SMEMBERS set1 1) "v4" 2) "v1" 3) "v3" 4) "v2" 127.0.0.1:6379> SMEMBERS set2 1) "v4" 2) "v2"

1 2 3 4 5 6 7 8 127.0.0.1 : 6379 > SMEMBERS set1 1 ) "v4" 2 ) "v1" 3 ) "v3" 4 ) "v2" 127.0.0.1 : 6379 > SMEMBERS set2 1 ) "v4" 2 ) "v2"
获取集合的交集

交集:已属于A且属于B的元素称为A与B的交(集)

127.0.0.1:6379> SINTER set1 set2 1) "v4" 2) "v2"

1 2 3 127.0.0.1 : 6379 > SINTER set1 set2 1 ) "v4" 2 ) "v2"
获取集合的并集

并集:已属于A或属于B的元素为称为A与B的并(集)

127.0.0.1:6379> SUNION set1 set2 1) "v2" 2) "v4" 3) "v1" 4) "v3"

1 2 3 4 5 127.0.0.1 : 6379 > SUNION set1 set2 1 ) "v2" 2 ) "v4" 3 ) "v1" 4 ) "v3"
获取集合的差集

差集:已属于A而不属于B的元素称为A与B的差(集)

127.0.0.1:6379> SDIFF set1 set2 1) "v1" 2) "v3"

1 2 3 127.0.0.1 : 6379 > SDIFF set1 set2 1 ) "v1" 2 ) "v3"
有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个
double(双精度浮点型)类型的分数,redis正是通过该分数来为集合中的成员进行从小到大的排序,有序集合的成员是唯一的,但分数(score)却可以重复,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1), 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员),经常用于排行榜的场景

生成有序集合

127.0.0.1:6379> ZADD zset1 1 v1 #分数为1 (integer) 1 127.0.0.1:6379> ZADD zset1 2 v2 (integer) 1 127.0.0.1:6379> ZADD zset1 2 v3 #分数可重复,元素值不可以重复 (integer) 1 127.0.0.1:6379> ZADD zset1 3 v4 (integer) 1 127.0.0.1:6379> TYPE zset1 zset 127.0.0.1:6379> TYPE zset2 zset 一次生成多个数据: 192.168.7.101:6379> ZADD zset2 1 v1 2 v2 3 v3 4 v4 5 v5 (integer) 5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 127.0.0.1 : 6379 > ZADD zset1 1 v1    #分数为1 ( integer ) 1 127.0.0.1 : 6379 > ZADD zset1 2 v2 ( integer ) 1 127.0.0.1 : 6379 > ZADD zset1 2 v3    #分数可重复,元素值不可以重复 ( integer ) 1 127.0.0.1 : 6379 > ZADD zset1 3 v4 ( integer ) 1 127.0.0.1 : 6379 > TYPE zset1 zset 127.0.0.1 : 6379 > TYPE zset2 zset 一次生成多个数据: 192.168.7.101 : 6379 > ZADD zset2 1 v1 2 v2 3 v3 4 v4 5 v5 ( integer ) 5
集合排行案例

127.0.0.1:6379> ZADD paihangbang 90 nezha 199 zhanlang 60 zhuluoji 30 gangtiexia (integer) 4 127.0.0.1:6379> ZRANGE paihangbang 0 -1 #正序排序后显示集合内所有的key 1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 4) "zhanlang" 127.0.0.1:6379> ZREVRANGE paihangbang 0 -1 #倒序排序后显示集合内所有的key 1) "zhanlang" 2) "nezha" 3) "zhuluoji" 4) "gangtiexia" 127.0.0.1:6379> ZRANGE paihangbang 0 -1 WITHSCORES #显示指定集合内所有key和得分情况 1) "gangtiexia" 2) "30" 3) "zhuluoji" 4) "60" 5) "nezha" 6) "90" 7) "zhanlang" 8) "199" 127.0.0.1:6379> ZREVRANGE paihangbang 0 -1 WITHSCORES #显示指定集合内所有key和得分情况 1) "zhanlang" 2) "199" 3) "nezha" 4) "90" 5) "zhuluoji" 6) "60" 7) "gangtiexia" 8) "30" 127.0.0.1:6379>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127.0.0.1 : 6379 > ZADD paihangbang 90 nezha 199 zhanlang 60 zhuluoji 30 gangtiexia ( integer ) 4 127.0.0.1 : 6379 > ZRANGE paihangbang 0 - 1    #正序排序后显示集合内所有的key 1 ) "gangtiexia" 2 ) "zhuluoji" 3 ) "nezha" 4 ) "zhanlang" 127.0.0.1 : 6379 > ZREVRANGE paihangbang 0 - 1 #倒序排序后显示集合内所有的key 1 ) "zhanlang" 2 ) "nezha" 3 ) "zhuluoji" 4 ) "gangtiexia" 127.0.0.1 : 6379 > ZRANGE paihangbang 0 - 1 WITHSCORES    #显示指定集合内所有key和得分情况 1 ) "gangtiexia" 2 ) "30" 3 ) "zhuluoji" 4 ) "60" 5 ) "nezha" 6 ) "90" 7 ) "zhanlang" 8 ) "199" 127.0.0.1 : 6379 > ZREVRANGE paihangbang 0 - 1 WITHSCORES    #显示指定集合内所有key和得分情况 1 ) "zhanlang" 2 ) "199" 3 ) "nezha" 4 ) "90" 5 ) "zhuluoji" 6 ) "60" 7 ) "gangtiexia" 8 ) "30" 127.0.0.1 : 6379 >
获取集合的长度数

127.0.0.1:6379> ZCARD paihangbang (integer) 4 127.0.0.1:6379> ZCARD zset1 (integer) 4 127.0.0.1:6379> ZCARD zset2 (integer) 4

1 2 3 4 5 6 127.0.0.1 : 6379 > ZCARD paihangbang ( integer ) 4 127.0.0.1 : 6379 > ZCARD zset1 ( integer ) 4 127.0.0.1 : 6379 > ZCARD zset2 ( integer ) 4
基于索引返回数值

127.0.0.1:6379> ZRANGE paihangbang 0 2 1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 127.0.0.1:6379> ZRANGE paihangbang 0 10 #超出范围不报错 1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 4) "zhanlang" 127.0.0.1:6379> ZRANGE zset1 1 3 1) "v2" 2) "v3" 3) "v4" 127.0.0.1:6379> ZRANGE zset1 0 2 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> ZRANGE zset1 2 2 1) "v3"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 127.0.0.1 : 6379 > ZRANGE paihangbang 0 2 1 ) "gangtiexia" 2 ) "zhuluoji" 3 ) "nezha" 127.0.0.1 : 6379 > ZRANGE paihangbang 0 10    #超出范围不报错 1 ) "gangtiexia" 2 ) "zhuluoji" 3 ) "nezha" 4 ) "zhanlang" 127.0.0.1 : 6379 > ZRANGE zset1 1 3 1 ) "v2" 2 ) "v3" 3 ) "v4" 127.0.0.1 : 6379 > ZRANGE zset1 0 2 1 ) "v1" 2 ) "v2" 3 ) "v3" 127.0.0.1 : 6379 > ZRANGE zset1 2 2 1 ) "v3"
返回某个数值的索引

127.0.0.1:6379> ZRANK paihangbang nezha (integer) 2 127.0.0.1:6379> ZRANK zset1 v2 (integer) 1 127.0.0.1:6379> ZRANK zset1 v3 (integer) 2

1 2 3 4 5 6 127.0.0.1 : 6379 > ZRANK paihangbang nezha ( integer ) 2 127.0.0.1 : 6379 > ZRANK zset1 v2 ( integer ) 1 127.0.0.1 : 6379 > ZRANK zset1 v3 ( integer ) 2
哈希(hash)

hash 是一个string类型的field和value的映射表,edis 中每个 hash 可以存储 2^32 -1 键值对,类似于字典,存放了多个k/v 对,hash特别适合用于存储对象场景

生成hash key

127.0.0.1:6379> HSET 9527 name zhouxingxing age 20 (integer) 2 127.0.0.1:6379> TYPE 9527 hash 127.0.0.1:6379> HSET hash1 name tom age 18 (integer) 1 127.0.0.1:6379> TYPE hash1 hash

1 2 3 4 5 6 7 8 9 127.0.0.1 : 6379 > HSET 9527 name zhouxingxing age 20 ( integer ) 2 127.0.0.1 : 6379 > TYPE 9527 hash   127.0.0.1 : 6379 > HSET hash1 name tom age 18 ( integer ) 1 127.0.0.1 : 6379 > TYPE hash1 hash
获取hash key字段值

127.0.0.1:6379> HGET 9527 name "zhouxingxing" 127.0.0.1:6379> HGET 9527 age "20" 127.0.0.1:6379> HMGET 9527 name age #获取多个值 1) "zhouxingxing" 2) "20" 127.0.0.1:6379>

1 2 3 4 5 6 7 8 9 127.0.0.1 : 6379 > HGET 9527 name "zhouxingxing" 127.0.0.1 : 6379 > HGET 9527 age "20"   127.0.0.1 : 6379 > HMGET 9527 name age    #获取多个值 1 ) "zhouxingxing" 2 ) "20" 127.0.0.1 : 6379 >
删除一个hash key的字段

127.0.0.1:6379> HDEL 9527 age (integer) 1 127.0.0.1:6379> HGET 9527 age (nil) 127.0.0.1:6379> HGET 9527 name "zhouxingxing"

1 2 3 4 5 6 127.0.0.1 : 6379 > HDEL 9527 age ( integer ) 1 127.0.0.1 : 6379 > HGET 9527 age ( nil ) 127.0.0.1 : 6379 > HGET 9527 name "zhouxingxing"
获取所有hash表中的key

127.0.0.1:6379> HMSET 9527 name zhouxingxing age 50 city hongkong #重新设置 OK 127.0.0.1:6379> HKEYS 9527 1) "name" 2) "age" 3) "city"

1 2 3 4 5 6 127.0.0.1 : 6379 > HMSET 9527 name zhouxingxing age 50 city hongkong #重新设置 OK 127.0.0.1 : 6379 > HKEYS 9527 1 ) "name" 2 ) "age" 3 ) "city"
获取指定hash的所有key及value

127.0.0.1:6379> HGETALL 9527 1) "name" 2) "zhouxingxing" 3) "age" 4) "50" 5) "city" 6) "hongkong" 127.0.0.1:6379>

1 2 3 4 5 6 7 8 127.0.0.1 : 6379 > HGETALL 9527 1 ) "name" 2 ) "zhouxingxing" 3 ) "age" 4 ) "50" 5 ) "city" 6 ) "hongkong" 127.0.0.1 : 6379 >
删除hash

127.0.0.1:6379> DEL 9527 (integer) 1 127.0.0.1:6379> HMGET 9527 name city 1) (nil) 2) (nil) 127.0.0.1:6379> EXISTS 9527 (integer) 0

1 2 3 4 5 6 7 127.0.0.1 : 6379 > DEL 9527 ( integer ) 1 127.0.0.1 : 6379 > HMGET 9527 name city 1 ) ( nil ) 2 ) ( nil ) 127.0.0.1 : 6379 > EXISTS 9527 ( integer ) 0

赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » Redis数据类型详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏