美文网首页
redis原理及使用

redis原理及使用

作者: 蓝调_4f2b | 来源:发表于2022-12-10 01:03 被阅读0次

一. 基本数据结构

  1. 数据结构类型
    string, hash, list, set, zset

  2. String 类型
    (1)基本操作
    SET key value. // 存入字符串键值对
    MSET key value [key value ...] // 批量存储字符串键值对
    GET key // 获取一个字符串键值
    DEL key [key ...] // 删除一个键
    EXPIRE key seconds // 设置一个键的过期时间(秒)
    (2)原子操作
    INCR key // 将key中储存的数字值加1
    DECR key // 将key中储存的数字值减1
    INCRBY key increment // 将key所储存的值加上increment
    DECRBY key decrement // 将key所储存的值减去decrement
    (3)对象缓存
    SET user:1 value(json格式数据)
    (4)分布式锁
    SETNX product:10001 true //返回1代表获取锁成功
    SETNX product:10001 true //返回0代表获取锁失败
    。。。
    执行业务操作
    DEL product:10001 //执行完业务释放锁
    SET product:10001 true ex 10 nx //防止程序意外终止导致死锁
    (5)应用场景

  • 计算器:INCR article:readcount:{文章id}
  • 分布式系统全局序列号:INCRBY orderId 1000
  1. Hash类型
    (1)常规操作
    HSET key field value // 存储一个哈希表key的键值
    HGET key field //获取哈希表key对应的field键值
    HMGET key field [field ...] //批量获取哈希表key中多个field键值
    HGETALL key //返回哈希表key中所有的键值
    (2)应用场景
  • 对象缓存:HMSET user {userId}:name zhuge{userId}:balance 1888
  • 电商购物车:
    添加商品>hset cart:1001 10088 1
    增加数量>hincrby cart:1001 10088 1
    商品总数>hlen cart:1001
    删除商品>hdel cart:1001 10088
    获取购物车所有商品>hgetall cart:1001
    (3)hash结构优缺点
  • 优点
    1)同类数据归类整合储存,方便数据管理
    2)相比string操作消耗内存与cpu更小
    3)相比string储存更节省空间
  • 缺点
    1)过期功能不能使用在field上,只能用在key
    2)Redis集群架构下不适合大规模使用
  1. List结构
    (1)常用操作
    LPUSH key value [value ...] //将一个或多个值value插入到key列表的表头(最左边)
    RPUSH key value [value ...] //将一个或多个值value插入到key列表的表尾(最右边)
    LRANGE key start stop //返回列表key中指定区间内的元素
    (2)组合成常用数据结构
    Stack = LPUSH + LPOP
    Queue = LPUSH + RPOP
    Blocking MQ = LPUSH + BRPOP
    (3)应用场景
    微博消息及微信公众号
    LPUSH msg:{诸葛老师-ID} 10018
    LPUSH msg:{诸葛老师-ID} 10086
    LRANGE msg:{诸葛老师-ID} 0 4

  2. Set类型
    (1)常规操作
    SADD key member [member ...] //往集合key中存入元素
    SMEMBERS key //获取集合key中所有元素
    SCARD key //获取集合key的元素个数
    (2)Set集合运算


    Set集合运算.png
  • 求交集:
    SINTER set1 set2 set3 -> {c}
  • 求并集:
    SUNION set1 set2 set3 -> {a, b, c, d, e}
  • 求差集:
    SDIFF set1 set2 set3 -> {a, b, c} - {b, c, d, e} = {a}
    (3)应用场景
  • 微信抽奖小程序
    1)点击参与抽奖
    加入集合
    SADD key {userlD}
    2)查看参与抽奖
    所有用户
    SMEMBERS key
    3)抽取count名中奖者
    SRANDMEMBER key [count] / SPOP key [count]
  • 微博微信点赞收藏
    1)点赞:SADD like:{消息ID} {用户ID}
    2)获取点赞的用户列表:SMEMBERS like:{消息ID}
    3)获取点赞用户数:SCARD like:{消息ID}
  1. Zset有序集合
    为每一个插入元素带上分值,底层使用了跳表实现
    (1)常规操作
    ZADD key score member [[score member]…] //往有序集合key中加入带分值元素
    ZREM key member [member…] //从有序集合key中删除元素
    ZSCORE key member //返回有序集合key中元素member的分值
    (2)集合操作
    ZUNIONSTORE destkey numkeys key [key ...] //并集计算
    ZINTERSTORE destkey numkeys key [key…] //交集计算
    (3)应用场景
  • 排场榜


    排场榜.png

redis I/O多路复用模型

I/O多路复用模型.png

相关文章

  • redis内部原理揭秘

    课程目标 过期时间设置及原理分析 发布订阅模式 Redis持久化及原理分析 Redis的内存回收策略 Redis单...

  • mac 下 Redis5 BloomFilter 安装及与 py

    安装及使用布隆过滤器 以前的文章有布隆去重的原理,今天来个使用 Redis5中BloomFilter和Redis...

  • redis的原理及使用

    定义: 1.基于内存的key-value数据库2.基于c语言编写的,可以支持多种语言的api //set每秒11万...

  • Redis缓存总结

    Redis 原理及应用(1)--数据类型及底层实现方式redis学习(八)——redis应用场景 --不错哦 Re...

  • Redis

    原理详情参见redis原理总结 Redis原理了解吗?你们是如何使用的? Redis是基于内存、单进程单线程模型的...

  • Redis(03)-GeoHash原理及使用

    GeoHash 适用场景 当需要查询“附近的人员”这种功能的时候,如果使用mysql数据库这种方式存储经纬度的信息...

  • Zabbix自定义监控(二) 通过Zabbix监控redis内存

    如何利用zabbix监控redis内存使用情况呢 原理:利用redis-cli命令获取redis内存使用情况,re...

  • Redis 5 集群选举原理分析

    Redis 5 集群选举原理分析 Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www...

  • Redis核心原理

    Redis的一些核心原理。 Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www.ji...

  • 2019-12-10

    Redis共享Session原理及示例https://blog.csdn.net/moxiaomomo/artic...

网友评论

      本文标题:redis原理及使用

      本文链接:https://www.haomeiwen.com/subject/dmptqdtx.html