Redis——set,hash与列表[通俗易懂]

Redis——set,hash与列表[通俗易懂]一.List列表 基于Linked List实现 元素是字符串类型 列表头尾增删快,中间增删慢,增删元素是常态 元素可以重复出现 最多包含2^32-1元素 列表的索引 从左至右,从0开始 从右至左,从

Redis——set,hash与列表

一.List列表

基于Linked List实现 元素是字符串类型

列表头尾增删快,中间增删慢,增删元素是常态

元素可以重复出现

最多包含2^32-1元素

Redis——set,hash与列表[通俗易懂]

 

列表的索引

从左至右,从0开始

从右至左,从-1开始

Redis——set,hash与列表[通俗易懂]

 

1.左右或者头尾压入元素

LPUSH key value [value …]

LPUSHX key value

RPUSH key value [value …]

RPUSHX key value

 Redis——set,hash与列表[通俗易懂]

2.左右或者头尾弹出元素

LPOP key RPOP key

Redis——set,hash与列表[通俗易懂]

 

 

 

 

3.从一个列表尾部弹出元素压入到另一个列表的头部

RPOPLPUSH source destination

4.返回列表中指定范围元素

LRANGE key start stop LRANGE key 0 -1表示返回所有元素

Redis——set,hash与列表[通俗易懂]

5.获取指定位置的元素

LINDEX key index

6.设置指定位置元素的值

LSET key index value

7.列表长度,元素个数

LLEN key

 Redis——set,hash与列表[通俗易懂]

 

 

 

8.从列表头部开始删除值等于value的元素count次

LREM key count value

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值

count = 0 : 移除表中所有与 value 相等的值

Redis——set,hash与列表[通俗易懂]

 

 

 

9.去处指定范围外元素

LTRIM key start stop

Redis——set,hash与列表[通俗易懂]

 

 

 10.在列表中某个存在的值(pivot)前或后插入元素

LINSERT key BEFORE|AFTER pivot value

key和pivot不存在,不进行任何操作

 

Redis——set,hash与列表[通俗易懂]

 

11.阻塞
    如果弹出的列表不存在或者为空,就会阻塞
    超时时间设置为0,就是永久阻塞,直到有数据可以弹出
    如果多个客户端阻塞在同一个列表上,使用First In First Service原则,先到先服务

    左右或者头尾阻塞弹出元素

    BLPOP key [key …] timeout

    BRPOP key [key …] timeout

 

二. Hsh散列

1.特点

  由field和关联的value组成的map键值对

  field和value是字符串类型一个hash中

  最多包含2^32-1键值对

Redis——set,hash与列表[通俗易懂]

 

 

2.设置单个字段

HSET key field value

HSETNX key field value

key的filed不存在的情况下执行,key不存在直接创建

3.设置多个字段

HMSET key field value [field value …]

4.返回字段个数

HLEN key

5.判断字段是否存在

HEXISTS key field

key或者field不存在,返回0

 

 

 Redis——set,hash与列表[通俗易懂]

 

6.返回字段值

HGET key field

7.返回多个字段值

HMGET key field [field …]

8.返回所有的键值对

HGETALL key

9.返回所有字段名

HKEYS key

10.返回所有值

HVALS key

Redis——set,hash与列表[通俗易懂]

 

 

 

11.在字段对应的值上进行整数的增量计算

HINCRBY key field increment

12.在字段对应的值上进行浮点数的增量计算

HINCRBYFLOAT key field increment

13.删除指定的字段

HDEL key field [field …]

 

 

 Redis——set,hash与列表[通俗易懂]

 

14. hash的用途

1)节约内存空间

2)每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等)

3)所以数据库里面的键越多,redis数据库服务器在储存附加管理信息方面耗费的内存就越多,花在管理数据库键上的CPU也会越多在字段对应的值上进行浮点数的增量计算

 Redis——set,hash与列表[通俗易懂]

15.不适合hash的情况

1)使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据

2)使用过期键功能:Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面

 

 三.set集合

1.特点

无序的、去重的

元素是字符串类型

最多包含2^32-1元素

Redis——set,hash与列表[通俗易懂]

 

 

 

2.增加一个或多个元素

SADD key member [member …]

如果元素已经存在,则自动忽略

3. 移除一个或者多个元素

SREM key member [member …]

元素不存在,自动忽略

4.返回集合包含的所有元素

SMEMBERS key

如果集合元素过多,例如百万个,需要遍历,可能会造成服务器阻塞,生产环境应避免使用

Redis——set,hash与列表[通俗易懂]

 

 

 5.集合的无序性 ‘

SADD friends “peter” “jack” “tom” “john” “may” “ben”

SADD anotherfriends “peter” “jack” “tom” “john” “may” “ben”

SMEMBERS friends

SMEMBERS anotherfriends

注意, SMEMBERS 有可能返回不同的结果,所以,如果需要存储有序且不重复的数据使用有序集合,存储有序可重复的使用列表

6. 随机返回集合中指定个数的

SRANDMEMBER key [count]

如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。

如果 count 大于等于集合基数,那么返回整个集合

如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值

如果 count 为 0,返回空 如果 count 不指定,随机返回一个元素

Redis——set,hash与列表[通俗易懂]

 

 

 

7. 返回集合中元素的个数

SCARD key 键的结果会保存信息,集合长度就记录在里面,所以不需要遍历

8. 随机从集合中移除并返回这个被移除的元素

SPOP key

 Redis——set,hash与列表[通俗易懂]

 

 

9. 差集

SDIFF key [key …],从第一个key的集合中去除其他集合和自己的交集部分

SDIFFSTORE destination key [key …],将差集结果存储在目标key中

Redis——set,hash与列表[通俗易懂]

 

 

 

Redis——set,hash与列表[通俗易懂]

 

 

10.交集

SINTER key [key …],取所有集合交集部分

SINTERSTORE destination key [key …],将交集结果存储在目标key中

Redis——set,hash与列表[通俗易懂]

 

 

 

Redis——set,hash与列表[通俗易懂]

 

 

 

 

 

11. 并集

SUNION key [key …],取所有集合并集

SUNIONSTORE destination key [key …],将并集结果存储在目标key中

Redis——set,hash与列表[通俗易懂]

 

 Redis——set,hash与列表[通俗易懂]

 

四. SortedSet有序集合

1.特点

类似Set集合

有序的、去重的

元素是字符串类型

每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。

分值可以相同 最多包含2^32-1元素

 

2. 增加一个或多个元素

ZADD key score member [score member …]

如果元素已经存在,则使用新的score

举例

ZADD fruits 3.2 香蕉

ZADD fruits 2.0 西瓜

ZADD fruits 4.0 番石榴 7.0 梨 6.8 芒果

Redis——set,hash与列表[通俗易懂]

 

 

3. 移除一个或者多个元素

ZREM key member [member …]

元素不存在,自动忽略

举例

ZREM fruits 番石榴 梨 芒果

ZREM fruits 西瓜

 

4.显示分值

ZSCORE key member

举例

ZSCORE fruits 芒果

ZSCORE fruits 西瓜

 Redis——set,hash与列表[通俗易懂]

计算机并不能精确表达每一个浮点数,都是一种近似表达

5.增加或者减少分值

ZINCRBY key increment member increment为负数就是减少

举例 ZINCRBY fruits 1.5 西瓜 ZINCRBY fruits -0.8 香蕉

Redis——set,hash与列表[通俗易懂]

 

6. 返回元素的排名(索引)

ZRANK key member

举例 ZRANK fruits 西瓜

ZRANK fruits 番石榴

ZRANK fruits 芒果

 Redis——set,hash与列表[通俗易懂]

 

 

 

7. 返回元素的逆序排名

ZREVRANK key member

 

 

 Redis——set,hash与列表[通俗易懂]

 

8. 返回指定索引区间元素

ZRANGE key start stop [WITHSCORES]

如果score相同,则按照字典序lexicographical order 排列 默认按照score从小到大,如果需要score从大到小排列,使用ZREVRANGE

 Redis——set,hash与列表[通俗易懂]

 

9. 返回指定分值区间元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回score默认属于[min,max]之间,元素按照score升序排列,score相同字典序

LIMIT中offset代表跳过多少个元素,count是返回几个。类似于Mysql

使用小括号,修改区间为开区间,例如(5、(10、5)

-inf和+inf表示负无穷和正无穷

 Redis——set,hash与列表[通俗易懂]

 

 10.返回指定分值区间元素

ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回score默认属于[min,max]之间,元素按照score降序排列,score相同字典降序

LIMIT中offset代表跳过多少个元素,count是返回几个。类似于Mysql

使用小括号,修改区间为开区间,例如(5、(10、5)

-inf和+inf表示负无穷和正无穷

Redis——set,hash与列表[通俗易懂]

 

11.移除指定排名范围的元素

 Redis——set,hash与列表[通俗易懂]

 

12.移除指定分值范围的元素

 Redis——set,hash与列表[通俗易懂]

 

 13.返回集合中元素个数

Redis——set,hash与列表[通俗易懂]

 

 14.并集

Redis——set,hash与列表[通俗易懂]

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5851.html

(0)
上一篇 2023-04-22
下一篇 2023-04-22

相关推荐

  • 记一次MySQL字符串索引优化方案

    记一次MySQL字符串索引优化方案本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等字符串建立索引的优化1.建立前缀索引假设建立一个支持邮箱登录的用户表,对于邮件字段来说,可以有以下几种建立索引的方式:①.直接…

    2023-03-21
    162
  • Python 3.7 安装教程

    Python 3.7 安装教程Python是一门高级编程语言,由于其简单易学、拥有丰富的第三方模块以及广泛应用于数据科学、Web开发等领域中,越来越受到了许多人的青睐。Python 3.7是Python编程语言的最新版本,Python 3.7拥有MD5密码改进、新的内存管理工具和各种其它改进。而如何安装Python 3.7成了初学者们所关心的问题。

    2024-04-19
    74
  • MSSQL·备份数据库中的单表[通俗易懂]

    MSSQL·备份数据库中的单表[通俗易懂]阅文时长 | 0.11分钟 字数统计 | 237.6字符 主要内容 | 1、引言&背景 2、声明与参考资料 『MSSQL·备份数据库中的单表』 编写人 | SCscHero 编写时间

    2023-04-15
    159
  • mysql5.7.28之主主配置

    mysql5.7.28之主主配置1 简介 1.1 主从同步 MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库复制到另一个MySQL数据库,在master与Slave之间实现整个主…

    2023-04-07
    140
  • Python饼图实现:统计数据可视化

    Python饼图实现:统计数据可视化随着数据的快速增长,数据可视化也成为了数据分析的重要手段之一。Python作为一种强大的编程语言,在数据分析领域也有着十分广泛的应用。饼图是一种常见的数据可视化图表,通过饼图可以直观地展示数据集的组成部分占比,也方便读者对数据进行理解和分析。

    2024-05-14
    73
  • 基于图深度学习的自然语言处理方法和应用「终于解决」

    基于图深度学习的自然语言处理方法和应用「终于解决」导读: 本次分享的内容为图深度学习在自然语言处理领域的方法与应用,主要内容和素材都来自于我们Graph4NLP团队的一篇调研文章:Graph Neural Networks for Natural L

    2023-05-14
    135
  • pythonflask源码讲解的简单介绍

    pythonflask源码讲解的简单介绍 1.建立: F:\Python\flask文件夹路径

    2023-12-03
    125
  • MySQL数据库的两种连接方式:TCP/IP和Socket

    MySQL数据库的两种连接方式:TCP/IP和SocketLinux平台环境下主要有两种连接方式,一种是TCP/IP连接方式,另一种就是socket连接。 在Windows平台下,有name pipe和share memory(不考虑)两种。 TCP/IP连

    2023-01-23
    144

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注