1、我们先来直观感受一下redis
set key01 "hello redis"get key01
2、基本字符串,里面存放json串,可以解决大部分问题,如果更换为列表、散列、集合、有序集合性能能提升很大。
其中redis key是二进制安全的,key取值的原则是:键值不能太长,它会消耗内存,且在数据中查找这类键值的计算成本较高,也不能太短,可读性较差。
Value为String类型,也是二进制安全的,redis字符串包含任意类型的数据。
最多存储512M的数据。
可以轮询查看有哪些原语
hep @tab
每一套类型给一套独立的原语,
help set
help ksys是一个全局的概念,keys *,可以获取刚才创建的所有字符
String类型的基本操作:
查看key的类型
type key
键是否存在
exists key
键重命名
rename key newkey
键删除
del key
获取值
get key
获取多个给定的键的值
MGET key[key ...]
如果存在则获取值,如果不存在,则创建并赋值
getest key value
字符串长度
strlen key
追加值
append key value
查看key的数据类型
object encoding key
获取子字符处,相当于截取概念
getrange key start end
索引:0从左开始,-1 从右开始
incr key:自增,返回新值,如果incr一个不是int的value则返回错误,incr一个不存在的key,则设置key为1
incrby key 2:跳2自增 incrbyfloat by 0.7: 自增浮点数
位图:归功于二进制安全,按照字节数组取存。
setbit key offset value 0/1
offset偏移量,从0开始,这个是二进制位的偏移量,
k3不存在,底层开辟一个字节的空间大小,整个二进制位01000000
返回指定值0或是1在指定区间上第一次出现的位置的偏移量
bitpos key bit start end
统计指定位区间上值为1的个数,给出的是字节的索引
bitcount key start end
案例:
网站用户的上线次数统计(活跃用户)
用户ID为key,天作为offset,上线置为1 366>0000000000000000
366 /8 50byte 16 50
一个用户,一年的登陆数据只是50byte
key:zzj value:11 1 000000000000000000010000000000000000
ID为500的用户,今年的第1天上线,第30天上线
setbit u500 1 1 setbit u500 30 1 bitcount sean 0 -1 ykes u*
按天统计网站活跃用户
天作为key,用户ID为offset,上线置为1
求一段时间内活跃用户数 500 /8 366*63byte
setbit 20190115 15 1 1000000000000000 setbit 20190117 123 1 0000000000000000 setbit 20190117 123 1 0000000000000000
求1月10日到1到11日的活跃用户
bitop or aaa 20190110 20190111 bitcount aaa 0 -1