Redis有五种数据类型,string,list,hash,set,zset,这五种数据类型说的是Key-Value中的value。
下面来简要介绍string数据类型的几种命令,主要涉及字符串,数值,bitmap操作。
set 带参数设置
set key value nx ##不存在的时候才设置,可以用于分布式锁,拿到锁的人才能操作
127.0.0.1:6379> set k1 123
OK
127.0.0.1:6379> get k1
"123"
127.0.0.1:6379> set k1 234 nx
(nil)
127.0.0.1:6379> get k1
"123"
set key value xx ##存在的时候才设置,只用于更新
127.0.0.1:6379> set k2 123 xx
(nil)
127.0.0.1:6379> get k2
(nil)
127.0.0.1:6379> get k1
"123"
127.0.0.1:6379> set k1 abc xx
OK
127.0.0.1:6379> get k1
"abc"
127.0.0.1:6379>
批量set
127.0.0.1:6379> mset k2 e k3 f k4 g
OK
127.0.0.1:6379> mget k2 k3 k4
1) "e"
2) "f"
3) "g"
getset :相当于先get,再set,但是比单独发送get,set减少了一次IO请求,效率更高

127.0.0.1:6379> set k1 123
OK
127.0.0.1:6379> getset k1 456
"123"
127.0.0.1:6379> get k1
"456"
msetnx

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> msetnx k1 a k2 b
(integer) 1
127.0.0.1:6379> mget k1 k2
1) "a"
2) "b"
127.0.0.1:6379> msetnx k2 c k3 d
(integer) 0
127.0.0.1:6379> mget k1 k2 k3
1) "a"
2) "b"
3) (nil)
bitmap操作(bitcount ,bittops ,bitpos),使用场景:统计用户一年有多少天是登录的
127.0.0.1:6379> setbit user1key 1 1
(integer) 0
127.0.0.1:6379> setbit user1key 2 1
(integer) 0
127.0.0.1:6379> setbit user1key 23 1
(integer) 0
127.0.0.1:6379> setbit user1key 56
(error) ERR wrong number of arguments for 'setbit' command
127.0.0.1:6379> setbit user1key 56 1
(integer) 0
127.0.0.1:6379> setbit user1key 354 1
(integer) 0
127.0.0.1:6379> bitcount user1key 0 -1
(integer) 5
可以使用用户id作为key值,哪一天登录,就把哪一天的bit位设置为1,使用bitcount
就能统计该用户一年的登录天数。
网友评论