一.List列表

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

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

元素可以重复出现

最多包含2^32-1元素

列表的索引

从左至右,从0开始

从右至左,从-1开始

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

LPUSH key value [value ...]

LPUSHX key value

RPUSH key value [value ...]

RPUSHX key value

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

LPOP key RPOP key

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

RPOPLPUSH source destination

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

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

5.获取指定位置的元素

LINDEX key index

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

LSET key index value

7.列表长度,元素个数

LLEN key

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

LREM key count value

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

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

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

 

9.去处指定范围外元素

LTRIM key start stop

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

LINSERT key BEFORE|AFTER pivot value

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

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键值对

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

6.返回字段值

HGET key field

7.返回多个字段值

HMGET key field [field ...]

8.返回所有的键值对

HGETALL key

9.返回所有字段名

HKEYS key

10.返回所有值

HVALS key

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

HINCRBY key field increment

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

HINCRBYFLOAT key field increment

13.删除指定的字段

HDEL key field [field ...]

14. hash的用途

1)节约内存空间

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

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

15.不适合hash的情况

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

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

 三.set集合

1.特点

无序的、去重的

元素是字符串类型

最多包含2^32-1元素

2.增加一个或多个元素

SADD key member [member ...]

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

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

SREM key member [member ...]

元素不存在,自动忽略

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

SMEMBERS key

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

 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 不指定,随机返回一个元素

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

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

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

SPOP key

 

9. 差集

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

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

10.交集

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

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

11. 并集

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

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

四. 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 芒果

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

ZREM key member [member ...]

元素不存在,自动忽略

举例

ZREM fruits 番石榴 梨 芒果

ZREM fruits 西瓜

 

4.显示分值

ZSCORE key member

举例

ZSCORE fruits 芒果

ZSCORE fruits 西瓜

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

5.增加或者减少分值

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

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

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

ZRANK key member

举例 ZRANK fruits 西瓜

ZRANK fruits 番石榴

ZRANK fruits 芒果

7. 返回元素的逆序排名

ZREVRANK key member

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

ZRANGE key start stop [WITHSCORES]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 13.返回集合中元素个数

 14.并集

Redis——set,hash与列表的更多相关文章

  1. redis的hash操作在集中式session中的应用

    在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共 ...

  2. redis对hash进行的相关操作

    redis对hash类型操作的相关命令以及如何在python使用这些命令 redis对hash类型操作的命令: 命令 语法 概述 返回值 Redis Hdel 命令 hdel key field [f ...

  3. Redis之Hash数据结构

    0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数 ...

  4. redis数据类型--hash

    /** Redis应用之Hash数据类型* 问题1:操作命令* 问题2:存储实现原理和数据结构* 问题3:应用场景* */ 先了解下什么是hash,什么是hash碰撞:hash:是包含键值对的kv的数 ...

  5. Redis数据类型之散列表

    Redis五大数据类型以及操作 目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字 ...

  6. Redis数据结构之压缩列表-ziplist

    为了节约内存,在zset和hash容器对象元素个数较少时,Redis会采用压缩列表(ziplist)进行存储. 压缩列表是一块连续的内存空间,元素之间紧挨着存储,不存在冗余 一个压缩列表可以包含任意多 ...

  7. 面试官:说说Redis的Hash底层 我:......(来自阅文的面试题)

    redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS Redis的双向链表一文全知道 前言 hello ...

  8. Redis常用命令入门——列表类型(一级二级缓存技术)

    获取列表片段 redis > LRANGE KEY_NAME START END lrange命令比较常用,返回从start到stop的所有元素的列表,start和stop都是从0开始. (1) ...

  9. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

随机推荐

  1. NCB | 定量蛋白质组学揭示细胞外泌体通用标志物Syntenin-1

    外泌体 (exosomes) 是由哺乳动物细胞通过"内吞-融合-外排"等机制,主动向胞外释放的纳米级 (直径40~60 nm) 双层囊泡小体,携带蛋白质.核酸.脂质等多种生物活性分 ...

  2. C++ //多态案例 -计算器类(普通写法 和 多态写法) //利用多态实现计算器 //多态好处: //1.组织结构清晰 //2.可读性强 //3.对于前期和后期扩展以及维护性高

    1 //多态案例 -计算器类(普通写法 和 多态写法) 2 3 #include <iostream> 4 #include <string> 5 using namespac ...

  3. 【javaFX学习】(二) 面板手册

    移至http://blog.csdn.net/qq_37837828/article/details/78732591 更新 找了好几个资料,没找到自己想要的,自己整理下吧,方便以后用的时候挑选,边学 ...

  4. KMP算法的详细解释

    什么是kmp算法呢?这是一个处理字符串的算法,用来判断给出的模式串p是否存在于文本串t中(p的长度小于t). 在本文中,字符串储存在字符数组中,并且第一个字符放在下标为1的元素中. 那么如何理解kmp ...

  5. SpringBoot | 4.1 SpringMVC的自动配置

    目录 前言 1. SpringMVC框架的设计与流程 1.1 SpringMVC框架的示意图 1.2 SpringMVC的组件流程 2. *自动配置的源码分析 2.1 导入Web场景启动器 2.2 找 ...

  6. 解决ftp登录问题:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  7. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  8. 【笔记】KNN之超参数

    超参数 超参数 很多时候,对于算法来说,关于这个传入的参数,传什么样的值是最好的? 这就涉及到了机器学习领域的超参数 超参数简单来说就是在我们运行机器学习之前用来指定的那个参数,就是在算法运行前需要决 ...

  9. JVM-初见

    目录 JVM的体系结构 类加载器 双亲委派机制 Native PC程序计数器 方法区(Method Area) 栈 堆 调优工具 常见JVM调优参数 常见垃圾回收算法 引用计数算法 复制算法 标记-清 ...

  10. perfdog的基本使用

    perfdog的下载安装就不做过多介绍了,直接进入正题,首先介绍下perfdog页面的结构 如下图 1.显示连接的设备 2.选择需要测试的app 3.device tab下显示设备的基本信息,sett ...