Redis使用
Redis简介
Redis基础命令之String类型的操作
String类型又分为:字符串,int,bimap。
Redis是二进制安全的,以字节流存储,可能因为客户端编码格式的不同,造成中文字存储的字符长度不同。
OBJECT encoding k1
redis基础库有16个,1-16,默认在第一个库创建key-value。
redis-cli -p 6380 -n 8
-n 代表打开第8个库。
set命令
字符串的操作:
nx 当value不存在的时候才能设置成功
xx 只能更新,当value存在的时候才能设置成功
- mset
mset k3 q k4 w\
- mget
mget k1 k3
- GETRANGE
正负向索引
GETRANGE k1 6 -1
- SETRANGE
SETRANGE k1 1 liwankai
在相应范围内设置值。
- STRLEN
STRLEN k1
取k1的value字符串长度。
- GETSET
GETSET k1 liwnak
返回旧值,设置新值。
数值的操作:
- INCR
- INCRBY k1 22
- DECR
- DECR k1 21
bitmap操作
两个应用场景:
- 用户
- setbite
SETBIT k1 1 1
- bitcount
统计字符串被设置为1的bit数.
BITCOUNT k1 0 0
-
bitpos
返回字符串里面第一个被设置为1或者0的bit位。 -
bitop
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
BITOP 命令支持 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种参数:
- BITOP AND destkey srckey1 srckey2 srckey3 … srckeyN ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
- BITOP OR destkey srckey1 srckey2 srckey3 … srckeyN,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
- BITOP XOR destkey srckey1 srckey2 srckey3 … srckeyN,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
- BITOP NOT destkey srckey,对给定 key 求逻辑非,并将结果保存到 destkey 。
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
执行结果将始终保持到destkey里面。
bitmap的实际应用
- 有用户系统,统计用户登录天数,且窗口随机
setbit sean 1 1
setbit sean 7 1
setbit sean 364 1
STRLEN sean
BITCOUNT sean -2 -1
2. 京东就是你们的,618做活动:送礼物
大库备货多少礼物
假设京东有2E用户
僵尸用户
冷热用户/忠诚用户
活跃用户统计!随即窗口
比如说 1号~3号 连续登录要 去重
setbit 20190101 1 1
setbit 20190102 1 1
setbit 20190102 7 1
bitop or destkey 20190101 20190102
BITCOUNT destkey 0 -1