前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis基础与高级

Redis基础与高级

作者头像
西柚dzh
发布2022-06-09 17:15:48
2650
发布2022-06-09 17:15:48
举报
文章被收录于专栏:dcmickey小站dcmickey小站

中高级用法

redis有正负索引 从头到尾0~+无穷,从尾巴到头 -1 ~-无穷

String

mset

mget

getset 设置新值并获取旧值

setxx 与setnx相反,表示存在才能set进去,否则失败

msetnx是原子性的,要么都成功,要么都失败

msetnx k1 a k2 b

mget k1 k2

msetnx k2 c k3 d

mget k1 k2 k3 (还是只有k1 和k2 ,分别为a和b)

bitmap

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

Hash

List

链表 双向链表

可以利用lpush lpop rpush rpop 来组合实现队列 栈等特性

栈 后进先出 同向操作 lpush lpop 队列 先进先出 反向操作 lpush rpop 数组使用 index操作

lrange 取list范围

lrem命令

lrem key 数量 value

数量可以是正数 负数 和0 ,正数表示从头到尾删个数, 负数从尾到头删个数 0

Set

sinter 取两个set的交集

sinterstore 取两个set交集 会存到新set中,减少io

srandmember 随机取set中n个数量的结果出来,redis中数据不会弹出

分为正数 负数 0 正数 不能重复的结果集,比如随机5个,就是取出5个不重复的结果集合,不超过set容器个数限制 负数 可以重复,取出你要的数量 0 不返还

spop 弹出一个

Pipelining管道

不使用用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

转载时须注明出处及本声明

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中高级用法
    • String
      • msetnx是原子性的,要么都成功,要么都失败
        • bitmap
          • Hash
            • List
              • Set
              • Pipelining管道
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档