• Redis学习(02)列表、集合、Hash、Zset


    Redis列表(List)

    List是单键多值,字符串列表,按照插入顺序可以将一个元素插入列表的头部或者尾部。

    底层是双向链表

    List常用命令

    1. lpush/rpush <key><value1><value2><value3> 从左侧或右侧插入数据
    2. lpop/rpop <key> 从左侧或右侧吐出一个值(值在键在,值亡键亡)
    3. rpoplpush <key1><key2>key1的右侧吐值,放到key2的左边
    4. lrange <key><起始位置><结束位置> 范围内取值(若设置范围0 -1 取出所有值)
    5. lindex <key><value> 按照索引下标获取元素(从左到右)
    6. llen <key> 获取列表长度
    7. linsert <key> before/after <value> <newvalue> 在某个key的某个值前面或者后面插入新值
    8. lrem <key><n><value> 从左边删除n个value
    9. lset <key><index><value> 将列表key下标为index的值替换为value

    List的数据结构

    List的数据结构是快速链表(quick list)

    在列表元素较少时,使用连续的一块内存,此时结构是压缩列表(ziplist),当数据量较多时,将多个压缩列表进行链接,才会转为quick list。

    Redis将多个ziplist使用双向指针进行串联。从而具有快速的插入删除功能,不会有太大的空间荣誉。

    Redis集合(Set)

    Redis中set的特性是具有自动排重

    set是string类型中的无序集合

    底层是value为null的hash表。

    添加、删除、查找的复杂度是O(1)

    Redis集合相关操作

    1. sadd <key><value1><value2>key中添加元素
    2. smembers <key> 取所有值
    3. sismember <key> <value> 判断某个set中是否存在某个值
    4. scard <key> 返回集合元素个数
    5. srem <key><value1><value2>... 删除集合中某个元素
    6. spop <key> 随机吐出一个值
    7. srandmember <key><n> 随机从集合取n个值(不删除)
    8. smove <source><destination><value> 将集合中的一个值从一个集合移动到另一个集合
    9. sinter <key1><key2> 返回两个集合交集
    10. sunion <key1><key2> 返回两个集合并集
    11. sdiff <key1><key2> 返回两个元素差集(key1key2无)

    Redis集合的数据结构

    set的数据结构是dict字典

    字典基于哈希表实现。内部是hash结构,所有value指向同一个位置。

    Redis哈希(Hash)

    Redis Hash 是一个键值对集合。

    Redis Hash 是一个string类型的field和value映射表,用于存储对象。

    Redis哈希相关操作

    1. hset <key><field><value>key集合中的<field>键赋值为value
    2. hget <key1><field> 取值
    3. hmset
    4. hexists <key><field> 查看是否存在某个值是否存在,0标识不存在,1标识存在
    5. hkeys <key> 查看所有的field
    6. hvals <key> 查看所有的value
    7. hincrby <key><field><步长>
    8. hsetnx <key><field><value> 将哈希表中的field设置为value(只能不存在该字段时才可以)

    注意:

    当Hash类型长度短时,采用压缩列表Ziplist,当长度长的时候,采用hashtable哈希表

    Redis的Zset(有序集合)

    Zset与set显示,没有重复元素!

    同时有序,每个成员有score,利用评分进行排序。

    Zset相关操作

    1. Zadd <key><score1><value1><score2><value2>... 将一个或者多个值元素加入有序表的key
    2. zrange <key><> 0 -1 withscores 查看<start><stop>之间的元素
    3. zrangebyscore <key> <start> <value> 【withscores】 查看某个范围的结果集
    4. zrevrangebyscore <key> <start> <value> 按照从大到小的排列
    5. zincrby <key><incremente><member> 让某个值进行增加
    6. zrem <key><value> 删除某个元素
    7. zcount <key><min><max> 统计分数区间内的元素个数
    8. zrank<key> <value> 返回该值在集合中的排名

    案例:

    利用zset实现一个文章访问量的排行榜?


    Zset的数据结构

    底层的数据结构是利用了两种:

    1、Hash,hash的作用是关联元素value与score。

    2、跳跃表:给元素value进行排序。

    跳跃表

     

  • 相关阅读:
    【阿里云】阿里云跨账号内网互通
    Linux之管道、环境变量与常用命令
    【机器学习】支持向量机分类
    高并发高可用之秒杀系统
    Android studio “Layout Inspector“工具在Android14 userdebug设备无法正常使用
    C++ day1
    【数仓】数仓建模理论及步骤,ER建模,维度建模,星形模型,雪花模型,数据分层
    【css】vue 鼠标移入移出 更改图片
    【Linux-达梦】A1.数据库部署
    AUTOCAD——文字显示方式、CAD怎么直接打开天正图纸
  • 原文地址:https://blog.csdn.net/qq_28790663/article/details/126427892