First:

  • 基于Linked List实现
  • 元素是字符串类型
  • 列表头尾增删快,中间增删慢,增删元素是常态
  • 元素可以重复出现
  • 最多包含2^32-1元素

  • 列表的索引
  • 从左至右,从0开始
  • 从右至左,从-1开始

list:

  • 队列:L/R  R/L
  • 栈: L/L   R/R
  • 数组:LINDEX LSET
  • 阻塞:BL BR

命令:

命令说明
block 块,阻塞
left 左
right 右
exist 存在
-------------------------------------------
左右或者头尾压入元素  string   set key “abc”
LPUSH key value [value ...]
LPUSHX key value
RPUSH key value [value ...]
RPUSHX key value
-------------------------------------------
左右或者头尾弹出元素
LPOP key
RPOP  key
-------------------------------------------
从一个列表尾部弹出元素压入到另一个列表的头部  string   getset
RPOPLPUSH source destination
-------------------------------------------
返回列表中指定范围元素
LRANGE key start stop
LRANGE key 0 -1 表示返回所有元素
show
-------------------------------------------
获取指定位置的元素
LINDEX key index
-------------------------------------------
设置指定位置元素的值
LSET key index value
-------------------------------------------
列表长度,元素个数   string    strlen
LLEN key      LRANGE KEY 0 -1

去除指定范围 外 元素
LTRIM key start stop
------------------------------
举例
RPUSH listkey c abc c ab 123 ab bj ab redis list
LTRIM listkey 0 -1
LTRIM listkey 1 -1
LTRIM listkey 1 10000
------------------------------
微博的评论最后500条:盖楼 lpush u1234:forumid:comments comments
LTRIM u1234:forumid:comments 0 499
------------------------------
在列表中某个存在的值(pivot)前或后插入元素
LINSERT key BEFORE|AFTER pivot value
key和pivot不存在,不进行任何操作
------------------------------
举例
RPUSH lst Clojure C Lua
LINSERT lst AFTER  C PythonLINSERT lst BEFORE C Ruby

Hash散列

设置单个字段
HSET key field value
HSETNX key field valuekey的filed不存在的情况下执行,key不存在直接创建
------------------------------------------------
设置多个字段
HMSET key field value [field value ...]
------------------------------------------------
返回字段个数
HLEN key
------------------------------------------------
判断字段是否存在
HEXISTS key field
key或者field不存在,返回0
------------------------------------------------
返回字段值
HGET key field
------------------------------------------------
返回多个字段值
HMGET key field [field ...]
------------------------------------------------
返回所有的键值对
HGETALL key
------------------------------------------------
返回所有字段名
HKEYS key
------------------------------------------------
返回所有值
HVALS key
------------------------------------------------
在字段对应的值上进行整数的增量计算
HINCRBY key field increment
------------------------------------------------
在字段对应的值上进行浮点数的增量计算
HINCRBYFLOAT key field increment
------------------------------------------------
删除指定的字段
HDEL key field [field ...]
------------------------------------------------
举例
HINCRBY numbers x 100
HINCRBY numbers x -50
HINCRBYFLOAT numbers x 3.14
HDEL numbers x

Hash用途:

1、节约内存空间
2、每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等)
3、所以数据库里面的键越多,redis数据库服务器在储存附加管理信息方面耗费的内存就越多,花在管理数据库键上的CPU也会越多在字段对应的值上进行浮点数的增量计算

不适合hash的情况 :

  • 使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据
  • 使用过期键功能:Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面

Hash散列案例:

微博的好友关注:获取关注微博的好友的列表
用户ID为key,Field为好友ID,Value为关注时间
user:1000          user:606    20150808
xz   pl  2011  zs 1949
用户维度统计
统计数包括:关注数、粉丝数、喜欢商品数、发帖数
用户为Key,不同维度为Field,Value为统计数
比如关注了5人
HSET user:100000 follow 5
HINCRBY user:100000 follow 1

Redis 05_List列表 数组 Hash散列相关推荐

  1. 使用md5+salt+hash散列查询

    一.说明 1.分析 通过MD5+salt+hash散列进行用户登录查询. 重点:(1)加密存储到数据库(2)验证登录用户信息和数据库信息是否一致 2.目录结构 二.范例 1.调用类 (1)代码块 pa ...

  2. 安全系列之——主流 Hash 散列算法介绍和使用

    这里填写标题 1. 安全系列之--主流 Hash 散列算法介绍和使用 1.1. Hash 散列算法介绍 1.2. Hash 散列算法的特征 1.3. 散列算法的使用 1.3.1. 文件传输 1.3.2 ...

  3. 安全系列之——主流Hash散列算法介绍和使用

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  4. 密码学之Hash散列算法

    前言 在第一篇文章中已经有介绍区块链技术概念,我们知道区块链主要是由共识算法机制.p2p网络.密码学这几个核心技术组成,前面几篇文章讲了共识算法,p2p网络,这次我们谈一下密码学,密码学是区块链系统的 ...

  5. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 参考文章: (1)Java解决Hash(散列)冲突的四种方法--开放地址法 ...

  6. shiro的通过md5+salt+hash散列进行注册操作

    一 . 注册流程 1.1 描述 通过http://localhost:8888/shiro/user/register访问 进行注册,调用register方法:通过md5+salt+hash(1024 ...

  7. Hash(散列)建表及查找

    散列方法 不用比较就能直接计算出记录的存储地址,从而找到所要的结点 Hash表 1).定义 根据设定的散列函数和相应解决冲突的方法为一组结点建立的一张表,表中的结点的存储位置依赖于设定的散列函数和处理 ...

  8. Hash(散列)冲突解决之线性探测再散列和二次探测再散列

    线性探测再散列 H(key) = key %13,key 为关键字,采用开放地址法中的线性探测再散列解决冲突,依次输入11 个关键字,16,74,60,43,54,90,46,31,29,88,77, ...

  9. MySQL分区:range(范围)list(in)columns(多字段)hash(散列)key(非数值型的hash)复合(hash key)

    1.了解 分区是把一个表分成若干个部分,就是分区,分而化之,表明上还是一张表,内容存放在不同的文件了: 数据存放在不同的分区的依据就是分区键: 3.优势:存储量大 查询快 查询大 方便删除 存储量:和 ...

最新文章

  1. 红芯丑闻揭秘者 Touko 专访 | 关于红芯丑闻的更多内幕……
  2. 微信确认出Bug,目前已全部恢复
  3. Mycat之安全设置与监控工具
  4. c#语言编写汉诺塔游戏,c#实现汉诺塔问题示例
  5. 数据结构7.6_最短路径
  6. 学习Redis持久化
  7. 使用IntelliJ IDEA 2016创建maven管理的Java Web项目
  8. 【数学建模】非线性规划模型与01规划模型(最优化)
  9. maven下载包慢解决
  10. random.choice与random.choices
  11. mysql show profile_MySQL show profile使用说明
  12. PRD产品需求文档原型模版
  13. 如何用Python抓抖音上的小姐姐
  14. 机场云商sign解析
  15. C/C++ int数组初始化
  16. 计算机应用大赛动员大会,计算机应用工程系第十二届学生会动员大会
  17. Java/171. Excel Sheet Column Number Excel序号转换数字
  18. 阿里任务调度SchedulerX2.0和阿里云大数据任务结合
  19. 前端面试题汇总 - 基础
  20. 关于电脑黑屏后st-link下载不了的问题 Error: Flash Download failed - Target DLL has been cancelled

热门文章

  1. CodeForces - 1553F Pairwise Modulo(数论+树状数组)
  2. CodeForces - 1316B String Modification(找规律)
  3. POJ - 3662 Telephone Lines(分层图最短路)
  4. 牛客 - 双流机场(思维)
  5. POJ - 2352 Stars(线段树/树状数组)
  6. stringstream的用法
  7. 模式对话框与非模式对话框的区别
  8. C++ 基础 : 函数重载、引用、内联函数、auto、范围for循环
  9. TCP的FIN_WAIT1状态理解|深入理解TCP
  10. Linux 思维导图整理(建议收藏)