redis中5大数据类型命令

redis中5大数据类型命令

string命令

以下命令与string类型的vule相关

命令功能示例
set创建一个字符串set name cjw
get获得一个字符串get name
strlen获得一个字符串的长度strlen name
append在字符串后面追加字符串append name 123
incr自增1,整数类型的string有效incr num
incrby自增一个自定义的整数,整数类型的string有效incrby num 17
incrbyfloat自增一个自定义的数字,数字类型的string有效incrby num 17,incrby num 17.1
decr自减1,整数类型的string有效decr num
decrby自减一个自定义的整数,整数类型的string有效decrby num 11
getrange获取指定范围的字符串,闭区间,从0开始getrange name 0 2
setrange从某个下标开始覆盖/追加一段字符串,下标可以不再字符串长度范围内setrange name 6 123
getset获取并修改字符串getset name 1
mget批量获取字符串mget name age sex
mset批量创建字符串mset name cjw age 17 sex men
setex创建一个字符串,并设置存活时间,单位为秒setex name1 20 cjw1
psetex创建一个字符串,并设置存活时间,单位为毫秒psetex name2 20000 cjw2
setnx如果一个字符串不存在,就创建该字符串setnx num 123
msetnx批量创建字符串,其中有一个字符串存在则所有字符串都不创建msetnx num1 22 num2 33

string中的bit命令

字符串在redis中是以二进制位的方式存储的。可以对字符串进行各种二进制位操作。二进制位操作是最高效的。

下标为0是最高位

getbit命令

获取字符串某个偏移位的二进制数,0表示最高位,最高位不确定。

“a”的二进制位:0110 0001

getbit a 0

示例 “a” 从0到7,0110 0001

127.0.0.1:6379> getbit a 0
(integer) 0
127.0.0.1:6379> getbit a 1
(integer) 1
127.0.0.1:6379> getbit a 2
(integer) 1
127.0.0.1:6379> getbit a 3
(integer) 0
127.0.0.1:6379> getbit a 4
(integer) 0
127.0.0.1:6379> getbit a 5
(integer) 0
127.0.0.1:6379> getbit a 6
(integer) 0
127.0.0.1:6379> getbit a 7
(integer) 1

示例 “aa” 从0到15 0110 0001 0110 0001

127.0.0.1:6379> set aa aa
OK
127.0.0.1:6379> getbit aa 0
(integer) 0
127.0.0.1:6379> getbit aa 1
(integer) 1
127.0.0.1:6379> getbit aa 2
(integer) 1
127.0.0.1:6379> getbit aa 3
(integer) 0
127.0.0.1:6379> getbit aa 4
(integer) 0
127.0.0.1:6379> getbit aa 5
(integer) 0
127.0.0.1:6379> getbit aa 6
(integer) 0
127.0.0.1:6379> getbit aa 7
(integer) 1
127.0.0.1:6379> getbit aa 8
(integer) 0
127.0.0.1:6379> getbit aa 9
(integer) 1
127.0.0.1:6379> getbit aa 10
(integer) 1
127.0.0.1:6379> getbit aa 11
(integer) 0
127.0.0.1:6379> getbit aa 12
(integer) 0
127.0.0.1:6379> getbit aa 13
(integer) 0
127.0.0.1:6379> getbit aa 14
(integer) 0
127.0.0.1:6379> getbit aa 15
(integer) 1

setbit命令

设置某个二进制位的值

 setbit a 6 1

“a”的第6位是0,把它设置为1,等价与“a”+2=“c”

127.0.0.1:6379> get a
"a"
127.0.0.1:6379> setbit a 6 1
(integer) 0
127.0.0.1:6379> get a
"c"

bitcount命令

统计字符串的二进制位中为1的个数

例如:“a”的二进制位,0110 0001,共有3个1。

127.0.0.1:6379> get a
"a"
127.0.0.1:6379> bitcount a
(integer) 3

bitop命令

可以进行二进制位进行,and(与),or(或),not(非),xor(异或)运算。

and 运算,全部为1,才为1。

“1”:0011 0001

“2”:0011 0010

“1” and “2” = 0011 0000 = “0”

127.0.0.1:6379> get a 
"1"
127.0.0.1:6379> get b
"2"
127.0.0.1:6379> bitop and a a b
(integer) 1
127.0.0.1:6379> get a
"0"

or运算,有一个1,就为1。

“1”:0011 0001

“2”:0011 0010

“1” or “2” = 0011 0011 = “3”

127.0.0.1:6379> get a
"1"
127.0.0.1:6379> get b
"2"
127.0.0.1:6379> bitop or a a b
(integer) 1
127.0.0.1:6379> get a
"3"

not运算,1变0,0变1.

“1”:0011 0001

“1” not = 1100 1110 = “\xce”,这个数字不再ascall表内。

127.0.0.1:6379> get a
"1"
127.0.0.1:6379> bitop not a a
(integer) 1
127.0.0.1:6379> get a
"\xce"
127.0.0.1:6379> getbit a 0
(integer) 1
127.0.0.1:6379> getbit a 1
(integer) 1
127.0.0.1:6379> getbit a 2
(integer) 0
127.0.0.1:6379> getbit a 3
(integer) 0
127.0.0.1:6379> getbit a 4
(integer) 1
127.0.0.1:6379> getbit a 5
(integer) 1
127.0.0.1:6379> getbit a 6
(integer) 1
127.0.0.1:6379> getbit a 7
(integer) 0

xor运算,相同为0,不同为1

“1”:0011 0001

“2”:0011 0010

“1” xor “2” = 0000 0011 = “\x03”

127.0.0.1:6379> get a
"1"
127.0.0.1:6379> get b
"2"
127.0.0.1:6379> bitop xor a a b
(integer) 1
127.0.0.1:6379> get a
"\x03"
127.0.0.1:6379> getbit a 0
(integer) 0
127.0.0.1:6379> getbit a 1
(integer) 0
127.0.0.1:6379> getbit a 2
(integer) 0
127.0.0.1:6379> getbit a 3
(integer) 0
127.0.0.1:6379> getbit a 4
(integer) 0
127.0.0.1:6379> getbit a 5
(integer) 0
127.0.0.1:6379> getbit a 6
(integer) 1
127.0.0.1:6379> getbit a 7
(integer) 1

bitpos命令

从最高位开始,返回第一个为0/1的下标。

“1”:0011 0001

从最高位开始,第一个为0的下标为0

从最高位开始,第一个为1的下标为2

127.0.0.1:6379> get a
"1"
127.0.0.1:6379> bitpos a 0
(integer) 0
127.0.0.1:6379> bitpos a 1
(integer) 2

hash命令

一个hash变量,可以存储40多亿个键值对。适用用来存储对象,键名不能重复。

hash命令都是以“h”开头的。

命令功能示例
hset为某个对象新增一条属性并赋值hset user name cjw
hget获取属性值hget user name
hmset批量新增属性hmset user name cjw age 17
hmget批量获取属性值hmget user name age
hdel删除属性hdel user age
hsetnx新增属性(该属性不存在)hsetnx user name cjw123
hvals返回某对象全部的属性值hvals user
hkeys返回某对象全部的属性hkeys user
hgetall返回某对象全部的属性和属性值hgetall user
hexists判断某属性是否存在hexists user age
hincrby为整形属性增加指定整数hincrby user age 1
hincrbyfloat为数字属性增加指定数字hincrbyfloat user age 0.9
hlen返回对象属性的个数hlen user
hstrlen返回属性值长度hstrlen user name

list命令

​ list变量,插入有顺序,可以头插(下标为0处),也可以尾插(下标为list长度)。可以存储40多亿个字符串。

有下标,可以存储重复值。

命令功能示例
lpush头部插入字符串lpush name cjw
lrange返回所有字符串,-1表示最后一个下标lrange name 0 -1
rpush在尾部插入字符串rpush name ww
llen返回list变量中值的个数llen name
lset修改指定下标处的值lset name 0 cjw
rpop尾部弹出值rpop name
lpop头部弹出值lpop name
lindex返回指定下标处的值lindex name 1
ltrim截取指定范围,闭区间ltrim name 1 2
blpop从头部弹出,阻塞式,指定过期时间,单位为秒,可以从多个list弹出,0表示永远不过期,优先从前面的list中弹出blpop name age 0
brpop从尾部弹出,同上brpop name age 1000
rpoplpush从一个list头部弹出,到另一个list尾部插入rpoplpush user1 user2
brpoplpush从一个list头部弹出,到另一个list尾部插入,阻塞式brpoplpush user1 user2 1000

应用-实现消息队列

图片.png

set命令

set可以存储40多亿个字符串,无序,不可重复。以“s”开头。

命令功能示例
sadd将一个或多个元素添加到集合中sadd user cjw 17 men
scard返回集合中元素的个数scard user
sismenber判断集合中是否存在该元素sismember user cjw
smembers返回集合中全部元素smembers user
srem从集合中删除1个或多个元素srem user 17 men
srandmember随机的从集合中返回指定数量的元素srandmember user 2
spop随机的从集合中弹出指定数量的元素spop user 2
smove将集合的一个元素移动到另一个集合中smove user user2 men
sdiff返回差集sdiff A B,sdiff B A
sdiffstore与sdiff类似,不过会将差集保存起来sdiffstore C A B
sinter返回交集sinter A B
sinterstore与sinter类似,不过会将交集保存起来sinterstore C A B
sunion返回并集sunion A B
sunionstore与sunion类似,不过会将交集保存起来sunionstore C A B

zset命令

​ 与set类似,每一个元素都关联一个double(分数),按分数从小到大排序,可以是负数。元素是唯一的,但分数可以重复。命令以“z”开头。

命令功能示例
zadd在集合中添加一个或多个分数/元素对zadd user 1 a 1.5 1.5 2 b
zscore返回元素的分数zscore user 1
zrange返回指定范围的元素,闭区间zrange user 0 -1
zrevrange倒序(从大到小)返回指定范围的元素,闭区间zrevrange user 0 -1
zcard返回集合元素的数量zcard user
zcount计数指定分数范围内元素的个数,闭区间zcount user 0 1
zrangebyscore返回指定分数范围内元素的个数,闭区间zrangebyscore user 0 1
zrank返回元素的下标,从0开始zrank user a
zrevrank返回元素的倒序下标,从0开始zrevrank user a
zincrby改变元素的分数,增加指定值zincrby user -10 0
zinterstore计算2个/多个有序集合的交集,保存到指定集合中,新集合元素的分数为原集合分数相加。zinterstore C 2 A B
zrem删除指定元素zrem user 0
zlexcount返回指定范围内的元素的个数,这些元素必须分数相同zlexcount user - +
zrangebylex返回指定范围内的元素,这些元素必须分数相同zrangebylex user [a [c,zrangebylex user - +
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值