• 技术文章 >数据库 >Redis

    通过命令和运用场景,带你了解Redis中的五大基础类型

    青灯夜游青灯夜游2022-02-11 19:51:21转载251
    本篇文章通过命令和运用场景,带大家了解一下Redis中的五大基础类型,命令和实践比较多,希望对大家有所帮助!

    redis 传统 5 大数据类型的运用

    redis 传统 5 大数据类型的落地应用

    Redis 介绍:

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)] 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability)。【相关推荐:Redis视频教程

    redis 命令查询:http://www.redis.cn/commands.html

    备注:redis 命令不区分大小写,而 key 是区分大小写的

    查询命令帮助:

    help @类型名词

    示例:

    1.png

    string 字符串类型

    最常用

    set key vuue

    getkey

    同时设置/获取多个键值

    MSET key value [key value ...]

    MGET key [key ,,,]

    数值增减

    递增数字 incr key

    增加指定的整数 incrby key increment

    递减数值 decr key

    减少指定的整数 decrby key decrement

    获取字符长度

    STRLEN key

    分布式锁

    setnx key value

    set key value [EX seconds] [PX milliseconds] [NX|XX]

    2.png

    3.png

    运用场景

    阅读数:只要点击了 rest 地址,直接使用 incr key 命令增加一个数字 1,完成记录数字。

    4.png

    命令实践

    5.png

    hash 哈希类型

    和 Java 数据结构映射

    Map<Stirng, Map<Object, Object>>

    一次设置一个字段值

    HSET key field value

    一次获取一个字段值

    HGET key field

    一次设置多个字段值

    HMSET key field value [fild value ...]

    一次获取多个字段值

    HMGET key field [field ...]

    获取所有字段值

    hgetall key

    获取某个 key 内的全部数量

    hlen

    删除一个 key

    hdel

    命令演示

    6.png

    应用场景

    购物车的早期,当前中小厂可以使用

    新增商品 --> hset shopcar:uid1024 334488 1

    新增商品 --> hset shopcar:uid2014 334477 1

    增加商品数量 --> hincrby shopcar:uid1024 334477 1

    商品总数 --> hlen shopcar:uid1024

    全部选择 --> hgetall shopcar:uid1024

    7.png

    list 列表类型

    向列表左边添加元素

    lpush key value [value ...]

    向列表右边添加元素

    rpush key value [value ...]

    查看列表

    lrange key start stop

    获取列表中元素的个数

    llen key

    命令使用

    8.png

    应用场景

    微信文章订阅公众号

    1、【xx宝】和 【xx报】发布了文章分别是 11 和 22

    2、 作者关注了他们两个,只要他们发布了新的文章,就会推送到我的 list

    lpush likearticle: uid1024 11 22

    3、查看作者自己的订阅号的全部文章,类似分页,下面 0-10 就是 一次显示 10 条 lrange likearticle:uid1024 0 10

    9.png

    set 不重复列表类型

    添加元素

    sadd key member [member ...]

    删除元素

    srem key member [member ...]

    获取集合的所有元素

    smembers key

    判断元素是否在集合中

    sismember key member

    获取集合中的元素个数

    scard key

    从集合中随机弹出一个元素, 元素不删除

    srandmember key [数字]

    从集合中随机弹出一个元素,出一个删一个

    spop key [数字]

    集合运算

    属于 A 但不属于 B 的元素构造成的集合

    sdiff key [key ...]

    属于 A 同时也属于 B 共同拥有的元素

    simter key [key ...]

    属于 A 或者属于 B 的元素合并后的集合

    sunion key [key ...]

    运用场景

    微信抽奖小程序

    10.png

    1、用户 id, 立即参与, sadd key 用户id

    2、显示已经有多少人参与了当前有 67231 人参与, scard key

    3、抽奖(从 set 中任意选取 N 个中奖人)

    srandmember key 2 随机抽奖 2 个人, 元素不会删除

    spop key 3 司机抽奖 3 个人, 元素会删除

    微信朋友圈点赞

    11.png

    1、新增点赞 ; sadd pub:msgid 点赞用户id1 点赞用户id2

    2、取消点赞;srem pub:msgid 点赞用户id

    3、展示所有点过赞的用户 smembers pub:msgid

    4、点赞用户数统计,就是常见的待点赞的红色数数字 scard pub:msgid

    5、判断某个朋友是否对楼主点过赞, sismember pub:msgid 用户id

    微博好友关注社交关系

    12.png

    共同关注的人

    sadd s1 1 2 3 4

    sadd s2 2 3 6 8

    sinter s1 s2

    共同关注:我去某人的微博,马上获取和某人共同关注的人

    我关注的人, 也关注了他(大家爱好相同)

    我关注了华为余承东, 余承东也关注了张召动, 我和余总有共同的爱好

    sadd s1 1 2 3 4 5

    sadd s2 3 4 5 6 7

    sismember s1 3

    sismember s2 3

    QQ内推可能认识的人

    sadd s1 1 2 3 4 5

    sadd s2 3 4 5 6 7

    // 共同好友

    sinter s1 s2

    // 差集

    sdiff s1 s2

    sdiff s2 s1

    zset 有序集合

    常用命令

    1、 向有序集合中添加一个元素和该元素的分数

    2、 添加元素

    3、 按照元素分数从小到达的顺序返回索引从 strat 到 stop 之间的所有元素

    4、获取元素的分数

    5、删除元素

    6、 获取指定分数范围的元素

    7、增加某个元素的分数

    8、 获取集合中元素的数量

    9、获得指定分数范围内的元素个数

    10、按照排名范围删除元素

    11、获取元素的排名

    应用场景

    1、更具商品销售对商品进行排序显示

    思路:定义商品销售排行榜(sorted set 集合),key 为 goods:sellsort, 分数为商品销售数量。

    商品编号 1001 的销量是 9 , 商品编号 1002 的销量是 15 | zadd goods:sellsort 9 1001 15 1002
    有一个顾客又买了 2 件商品 1001 , 商品编号是 1001 响亮增加 2 | zincrby goods:sellsort 2 10001
    求商品销量前 10 名 zrange goods:sellsort 0 10 withscores
    13.png

    2、 抖音热搜

    14.png

    1、点击视频

    ZINCRBY hotavi:20220203 1 八百

    ZINCRBY hotavi:20220203 15 八百 2 花木兰

    2、展示当日排行前 10 条

    zrevrange hotavi:20220203 0 9 withscores

    更多编程相关知识,请访问:编程入门!!

    以上就是通过命令和运用场景,带你了解Redis中的五大基础类型的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:Redis 五大基础类型
    上一篇:聊聊Redis中如何应对缓存热key问题?常用方案分享 下一篇:redis面试中常被问到的12个重点(附答案)
    PHP编程就业班

    相关文章推荐

    • 保证mysql和redis的双写一致性• 浅析Redis6中的单线程和多线程模型• 如何解决php redis502错误问题• 聊聊Redis中的主从同步和哨兵模式• swoole和redis的区别是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网