redis有正负索引 从头到尾0~+无穷,从尾巴到头 -1 ~-无穷
mset
mget
getset 设置新值并获取旧值
setxx 与setnx相反,表示存在才能set进去,否则失败
msetnx k1 a k2 b
mget k1 k2
msetnx k2 c k3 d
mget k1 k2 k3 (还是只有k1 和k2 ,分别为a和b)
setbit key offset value
offset是bit位,实际存储还是byte字节存 前置知识:1字节=8位 eg: setbit k1 1 1表示在下标为1的bit位存放1,换算就是第0号字节存 strlen k1 结果是1 setbit k1 9 1表示在下标为9的bit位存放1,超出第一个字节的范围,所以在第1号字节存 strlen k1 结果是2
bitpos
bitpos key bit start end 从key的字节位start 和end找第一个内容为x的bit位置,注意返回bit位,不是在某个字节段中的bit位,而是整个key完整bit长度里的bit位
bitcount
bitcount key start end 字节位start 和end中1出现的次数统计
bitop
语法 :bitop 操作 目标key key key ... eg 进行k1 k2的按位与 bitop and xxkey k1 k2 bitop or xxkey k1 k2
链表 双向链表
可以利用lpush lpop rpush rpop 来组合实现队列 栈等特性
栈 后进先出 同向操作 lpush lpop 队列 先进先出 反向操作 lpush rpop 数组使用 index操作
lrange 取list范围
lrem命令
lrem key 数量 value
数量可以是正数 负数 和0 ,正数表示从头到尾删个数, 负数从尾到头删个数 0
sinter 取两个set的交集
sinterstore 取两个set交集 会存到新set中,减少io
srandmember 随机取set中n个数量的结果出来,redis中数据不会弹出
分为正数 负数 0 正数 不能重复的结果集,比如随机5个,就是取出5个不重复的结果集合,不超过set容器个数限制 负数 可以重复,取出你要的数量 0 不返还
spop 弹出一个
不使用用pipelining,向redis中插入10w条string类型的日志,再删除10w记录,需要35秒
使用pipelining,需要629毫秒
鉴于pipepining发送命令的特性,redis服务器是以队列来存储准备执行的命令,而队列是从存放在有限的内存中,所以不建议太多命令一起打包。
原理是收集需要执行的命令,到最后才一次性执行。
M操作(mget mset等)相比pipelining,前者是原子操作,而piplining不是,Redis会把一个携带很多命令的piplin查分成几个子命令
版权属于:dingzhenhua
本文链接:https://cloud.tencent.com/developer/article/2019345
转载时须注明出处及本声明