VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • Redis5.x五种数据类型常见命令(2)

:6379> hlen okevin (integer) 2

hmgetall返回hash包含的所有键值对,hmgetall [key]

127.0.0.1:6379> hgetall okevin		#返回所有的键值对,奇数列为field,偶数列为value
1) "name"
2) "kevin"
3) "sex"
4) "male"

hexists命令检查给定的field是否存在hash值中,返回0表示不存在,返回1表示存在,hexists [key] [field]

127.0.0.1:6379> hexists okevin name
(integer) 1
127.0.0.1:6379> hexists okevin age
(integer) 0

hkeys获取hash包含的所有field键,hkeys [key]

127.0.0.1:6379> hkeys okevin
1) "name"
2) "sex"

hvals获取hash包含的所有field对应的value值,hvals [key]

127.0.0.1:6379> hvals okevin
1) "kevin"
2) "male"

hincrby给hash中指定的field键自增任意整数(和字符串类型的incrby类似),hincrby [key] [field] [number]

127.0.0.1:6379> hmset okevin age 0				#新增“年龄”field值为0
OK
127.0.0.1:6379> hmget okevin age					#获取“年龄”
1) "0"
127.0.0.1:6379> hincrby okevin age 25			#给“年龄”field自增“25”整数
(integer) 25
127.0.0.1:6379> hmget okevin age					#获取“年龄”
1) "25"

hincrbyfloat给hash中指定的filed键自增任意浮点数(和字符串类型的incrbyfloat类似),hincrbyfloat [key] [field] [number]

127.0.0.1:6379> hincrbyfloat okevin age 0.5
"25.5"
127.0.0.1:6379> hmget okevin age
1) "25.5"

hdel删除hash中指定的filed,hmdel [key] [field]

127.0.0.1:6379> hgetall okevin
1) "name"
2) "kevin"
3) "sex"
4) "male"
5) "age"
6) "25.5"
127.0.0.1:6379> hdel okevin age
(integer) 1
127.0.0.1:6379> hgetall okevin
1) "name"
2) "kevin"
3) "sex"
4) "male"

集合(set)

在上一章节讲到,集合(set)是以无序方式存储各不相同元素的数据类型。它和Java中的Set类型类似。它同样具有新增、删除、读取等基本操作,还有两个集合之间运算的操作。

读/写等常用命令

sadd命令将一个或多个元素添加到集合里,并返回被添加元素中原本并不存在集合中的元素数量,sadd [key] [member] [member]

127.0.0.1:6379> sadd students kevin yulinfeng
(integer) 2

sismember命令检查元素是否存在集合中,返回1表示存在,返回0表示不存在,sismember [key] [member]

127.0.0.1:6379> sismember students kevin
(integer) 1
127.0.0.1:6379> sismember students linfeng
(integer) 0

smembers命令返回集合中包含的所有元素,smembers [key]

127.0.0.1:6379> smembers students
1) "yulinfeng"
2) "kevin"

scard命令返回集合中元素的数量,scards [key]

127.0.0.1:6379> scard students
(integer) 2

srandmember命令从集合中随机返回一个或多个元素,当返回的元素数量设置为正数时,元素不会重复,当返回的元素数量设置为负数时,元素可能会重复,srandmember [key] [count]

127.0.0.1:6379> srandmember students 1
1) "yulinfeng"
127.0.0.1:6379> srandmember students 1
1) "kevin"
127.0.0.1:6379> srandmember students 3
1) "kevin"
2) "yulinfeng"
127.0.0.1:6379> srandmember students -3
1) "yulinfeng"
2) "kevin"
3) "kevin"

srem命令从集合中移除一个或多个指定的元素,并返回被移除的元素数量,srem [key] [member] [member]

多个集合命令

redis可以对多个集合进行操作,例如数学中的差集运算、交集运算等。下面只列举多个集合操作的命令,不再举例,但如果有场景运用时一定要知道redis还可以做多集合运算。

sdiff [key1] [key2]……命令返回存在于key1,但不存在于其他集合(key2)中的元素(差集运算)。

sdiff [dest-key] [key1] [key2]……命令也是同上的差集运算,但它将元素存储到dest-key键中。

sinter [key1] [key2]……命令返回同时存在所有集合(key1、key2)中的元素(交集运算)。

sinterstore [dest-key] [key1] [key2]……命令也是同上的交集运算,但它将元素存储到dest-key键中。

sunion [key1] [key2]……命令返回所有集合中(key1、key2)的元素(并集运算)。

sunionstore [dest-key] [key1] [key2]……命令也是同上的并集运算,但它将元素存储到dest-key键中。

有序集合

在上一章数据类型中,我们谈到尽管“有序集合”这种数据类型,更像是“集合”的有序版,但对于数据结构上讲,它更类似“哈希(hash)”。它同哈希类型一样,值也是k-v形式,不同的是有序集合的v代表的是用于排序的“分数”。

读/写等常用命令

zadd用于有序集合的写入操作,zadd [key] [score1] [member1] [score2] [member2]……

127.0.0.1:6379> zadd sorted 2 a 3 b
(integer) 2

zcard命令用于返回有序集合中的成员数量,zcard [key]

127.0.0.1:6379> zcard sorted
(integer) 2

zrank用于返回有序集合中成员member的排名(按分数从小到大排列),zrank [key] [member]

127.0.0.1:6379> zrank sorted a
(integer) 0
127.0.0.1:6379> zrank sorted b
(integer) 1

zrevrank命令也是返回成员member的排名,但它和zrank排序规则相反,它是按分数从大到小排列,zrevrank [key] [member]

127.0.0.1:6379> zrevrank sorted a
(integer) 1
127.0.0.1:6379> zrevrank sorted b
(integer) 0

zscore命令返回成员member的分数,zscore [key] [member]

127.0.0.1:6379> zscore sorted a
"2"

zrange [key] [start] [stop] (withscores)命令用于返回有序集合中排名介于start和stop之间的成员(按分数从小到大排列),withscores参数可选表示是否返回分数,start和end指的是排在第几名,从0开始。

127.0.0.1:6379> zrange sorted 0 0 withscores
1) "a"
2) "2"
127.0.0.1:6379> zrange sorted 0 1 withscores
1) "a"
2) "2"
3) "b"
4) "3"

zrevrangezrange类似,但它是按分数从大到小排列,zrevrange [key] [start] [end] (withscores)

127.0.0.1:6379> zrevrange sorted 0 0 withscores
1) "b"
2) "3"
127.0.0.1:6379> zrevrange sorted 0 1 withscores
1) "b"
2) "3"
3) "a"
4) "2"

zcount [key] [min_score] [max_score]返回分数介于min_score和max_score之间的成员数量。

127.0.0.1:6379> zcount sorted 0 2
(integer) 1
127.0.0.1:6379> zcount sorted 0 3
(integer) 2

zincrby [key] [incrment] [member]命令用于给member成员的分数加上incrment。

127.0.0.1:6379> zincrby sorted 2 a
"4"

zrem命令用于删除有序集合中指定的成员,zrem [key] [member1] [member2]……

127.0.0.1:6379> zrem sorted a
(integer) 1

多个有序集合命令

同集合一样,有序集合也可以做多个集合的操作,例如交集、并集等。

zinterstore用于交集运算。

zunionstore用于并集运算。


相关教程