第四节:Redis 数据结构之List 类型  
存储list:
ArrayList使用数组方式
LinkedList使用双向链接方式
 
双向链接表中增加数据
双向链接表中删除数据
 
存储list常用命令
两端添加
两端弹出
扩展命令
 
下面是操作命令的例子:
 
lpush 方式从左边开始添加
  1. 127.0.0.1:6379> lpush list1 a b c d
  2. (integer) 4
  3. 127.0.0.1:6379> lpush list1 1 2 3 4
  4. (integer) 8
  5. 127.0.0.1:6379> lrange list1 0 -1
  6. 1) "4"
  7. 2) "3"
  8. 3) "2"
  9. 4) "1"
  10. 5) "d"
  11. 6) "c"
  12. 7) "b"
  13. 8) "a"
  14. 127.0.0.1:6379> lrange list1 0 4
  15. 1) "4"
  16. 2) "3"
  17. 3) "2"
  18. 4) "1"
  19. 5) "d"
rpush 从右端开始添加(一般人比较习惯这种方式)
  1. 127.0.0.1:6379> rpush list2 a b c d
  2. (integer) 4
  3. 127.0.0.1:6379> rpush list2 1 2 3 4
  4. (integer) 8
  5. 127.0.0.1:6379> lrange list2 0 -1
  6. 1) "a"
  7. 2) "b"
  8. 3) "c"
  9. 4) "d"
  10. 5) "1"
  11. 6) "2"
  12. 7) "3"
  13. 8) "4"
rpop 右侧弹出集合元素
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "a"
  3. 2) "b"
  4. 3) "c"
  5. 4) "d"
  6. 5) "1"
  7. 6) "2"
  8. 7) "3"
  9. 8) "4"
  10. 127.0.0.1:6379> rpop list2
  11. "4"
  12. 127.0.0.1:6379> lrange list2 0 -1
  13. 1) "a"
  14. 2) "b"
  15. 3) "c"
  16. 4) "d"
  17. 5) "1"
  18. 6) "2"
  19. 7) "3"
lpop 左侧弹出集合元素
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "a"
  3. 2) "b"
  4. 3) "c"
  5. 4) "d"
  6. 5) "1"
  7. 6) "2"
  8. 7) "3"
  9. 127.0.0.1:6379> lpop list2
  10. "a"
  11. 127.0.0.1:6379> lrange list2 0 -1
  12. 1) "b"
  13. 2) "c"
  14. 3) "d"
  15. 4) "1"
  16. 5) "2"
  17. 6) "3"
llen查看元素个数
  1. 127.0.0.1:6379> llen list2
  2. (integer) 6
lpushx 集合头部插入元素
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "b"
  3. 2) "c"
  4. 3) "d"
  5. 4) "1"
  6. 5) "2"
  7. 6) "3"
  8. 127.0.0.1:6379> lpushx list2 zhangsan
  9. (integer) 7
  10. 127.0.0.1:6379> lrange list2 0 -1
  11. 1) "zhangsan"
  12. 2) "b"
  13. 3) "c"
  14. 4) "d"
  15. 5) "1"
  16. 6) "2"
  17. 7) "3"
rpushx 集合尾部插入元素
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "zhangsan"
  3. 2) "b"
  4. 3) "c"
  5. 4) "d"
  6. 5) "1"
  7. 6) "2"
  8. 7) "3"
  9. 127.0.0.1:6379> rpushx list2 lisi
  10. (integer) 8
  11. 127.0.0.1:6379> lrange list2 0 -1
  12. 1) "zhangsan"
  13. 2) "b"
  14. 3) "c"
  15. 4) "d"
  16. 5) "1"
  17. 6) "2"
  18. 7) "3"
  19. 8) "lisi"
lpush集合头部插入多个元素
rpush集合尾部插入多个元素
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "b"
  3. 2) "c"
  4. 3) "d"
  5. 4) "1"
  6. 5) "2"
  7. 6) "3"
  8. 127.0.0.1:6379> lpush list2 a1 a2
  9. (integer) 8
  10. 127.0.0.1:6379> lrange list2 0 -1
  11. 1) "a2"
  12. 2) "a1"
  13. 3) "b"
  14. 4) "c"
  15. 5) "d"
  16. 6) "1"
  17. 7) "2"
  18. 8) "3"
  1. 127.0.0.1:6379> lrange list2 0 -1
  2. 1) "b"
  3. 2) "c"
  4. 3) "d"
  5. 4) "1"
  6. 5) "2"
  7. 6) "3"
  8. 127.0.0.1:6379> rpush list2 zhangsan lisi
  9. (integer) 8
  10. 127.0.0.1:6379> lrange list2 0 -1
  11. 1) "b"
  12. 2) "c"
  13. 3) "d"
  14. 4) "1"
  15. 5) "2"
  16. 6) "3"
  17. 7) "zhangsan"
  18. 8) "lisi"
lrem 从指定方向删除指定个数的指定元素
  1. 127.0.0.1:6379> lpush list4 1 3 2 3 2 1 2 1 3
  2. (integer) 9
  3. 127.0.0.1:6379> lrange list4 0 -1
  4. 1) "3"
  5. 2) "1"
  6. 3) "2"
  7. 4) "1"
  8. 5) "2"
  9. 6) "3"
  10. 7) "2"
  11. 8) "3"
  12. 9) "1"
从左边开始删除2个1
  1. 127.0.0.1:6379> lrem list4 2 1
  2. (integer) 2
  3. 127.0.0.1:6379> lrange list4 0 -1
  4. 1) "3"
  5. 2) "2"
  6. 3) "2"
  7. 4) "3"
  8. 5) "2"
  9. 6) "3"
  10. 7) "1"
从右边开始删除2个3
  1. 127.0.0.1:6379> lrem list4 -2 3
  2. (integer) 2
  3. 127.0.0.1:6379> lrange list4 0 -1
  4. 1) "3"
  5. 2) "2"
  6. 3) "2"
  7. 4) "2"
  8. 5) "1"
删除所有2
  1. 127.0.0.1:6379> lrem list4 0 2
  2. (integer) 3
  3. 127.0.0.1:6379> lrange list4 0 -1
  4. 1) "3"
  5. 2) "1"
lset 设置集合指定索引的值
  1. 127.0.0.1:6379> lrange list1 0 -1
  2. 1) "4"
  3. 2) "3"
  4. 3) "2"
  5. 4) "1"
  6. 5) "d"
  7. 6) "c"
  8. 7) "b"
  9. 8) "a"
  10. 127.0.0.1:6379> lset list1 3 xxxx
  11. OK
  12. 127.0.0.1:6379> lrange list1 0 -1
  13. 1) "4"
  14. 2) "3"
  15. 3) "2"
  16. 4) "xxxx"
  17. 5) "d"
  18. 6) "c"
  19. 7) "b"
  20. 8) "a"
linsert 在集合里插入指定元素
在xxxx元素之前插入aa
  1. 127.0.0.1:6379> linsert list1 before xxxx aa
  2. (integer) 9
  3. 127.0.0.1:6379> lrange list1 0 -1
  4. 1) "4"
  5. 2) "3"
  6. 3) "2"
  7. 4) "aa"
  8. 5) "xxxx"
  9. 6) "d"
  10. 7) "c"
  11. 8) "b"
  12. 9) "a"
在xxxx元素之后插入bb
  1. 127.0.0.1:6379> linsert list1 after xxxx bb
  2. (integer) 10
  3. 127.0.0.1:6379> lrange list1 0 -1
  4. 1) "4"
  5. 2) "3"
  6. 3) "2"
  7. 4) "aa"
  8. 5) "xxxx"
  9. 6) "bb"
  10. 7) "d"
  11. 8) "c"
  12. 9) "b"
  13. 10) "a"
rpoplpush 把A集合尾部元素弹出并插入到B集合头部
  1. 127.0.0.1:6379> rpush list5 a b c
  2. (integer) 3
  3. 127.0.0.1:6379> rpush list6 1 2 3
  4. (integer) 3
  5. 127.0.0.1:6379> rpoplpush list5 list6
  6. "c"
  7. 127.0.0.1:6379> lrange list5 0 -1
  8. 1) "a"
  9. 2) "b"
  10. 127.0.0.1:6379> lrange list6 0 -1
  11. 1) "c"
  12. 2) "1"
  13. 3) "2"
  14. 4) "3"

峰Redis学习(4)Redis 数据结构(List的操作)的更多相关文章

  1. redis学习研究--Redis作者谈Redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...

  2. Redis学习笔记~Redis主从服务器,读写分离

    回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...

  3. redis学习笔记-redis的安装

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  4. Redis学习笔记(二) ---- PHP操作Redis各数据类型

    Redis 一.使用PHP操作Redis存储系统中的各类数据类型方法 1.String(字符串)操作 <?php // 1. 实例化 $redis = new Redis; // 2. 连接 r ...

  5. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...

  6. Redis学习笔记-Redis内部数据结构

    Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) ...

  7. Redis学习-redis概述

    最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQ ...

  8. redis学习笔记——Redis过期键的删除策略

    Redis过期键的删除策略 对于过期键一般有三种删除策略 定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作: 惰性删除:放任键过期 ...

  9. Redis学习笔记——Redis的基本操作

    之前介绍过如何在ubuntu安装Redis服务器:https://www.cnblogs.com/zifeiy/p/9062738.html 接下来,我们在Redis上进行一些基本的操作. 所县使用命 ...

  10. Redis学习:Redis的安装与配置

    Redis是新兴的一种内存数据库技术,在数据高速读写方面有着明显的优势.前几天,Redis3.0正式版本发布,为我们带来了Redis集群功能.这一功能很早就投入了开发,直到现在才真正走进我们的视野.可 ...

随机推荐

  1. xdoj-1057(Lucas定理的证明及其模板)

    Lucas定理的证明: 转自百度百科(感觉写的还不错) 首先你需要这个算式:    ,其中f > 0&& f < p,然后 (1 + x) nΞ(1 + x) sp+q Ξ ...

  2. resNet代码-小象/cv

    C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...

  3. C语言--第0次作业评分和总结(5班)

    作业链接http://www.cnblogs.com/ranh941/p/7496793.html 一.评分要求 *得分点1:建博客(5分) *得分点2:第0次作业(45分) **问题0:阅读推荐博客 ...

  4. (16)模型层Models - ORM的使用

    需求:通过orm创建user表 先配置settings文件夹 连接数据库和配置数据库 Django的模块有两种 1.mysqlDB  django内置的模块,只能在python2.X版本下用 2.py ...

  5. 《DSP using MATLAB》Problem 6.12

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  6. 《DSP using MATLAB》Problem 6.3

    天不亮又醒了,拍了张景象,这就是黎明前的黑暗吗

  7. java构造代码块详解

    一.简介 首先说一下,Java中有哪些代码块. 普通代码块 就是在方法后面使用"{}"括起来的代码片段,不能单独执行,必须调下其方法名才可以执行. 静态代码块 在类中使用stati ...

  8. Go Example--通道同步

    package main import ( "fmt" "time" ) func main() { //缓存通道 done := make(chan bool ...

  9. Go Example--缓存通道

    package main import "fmt" func main() { //缓存通道 msg := make(chan string,2) msg <- " ...

  10. LeetCode - Diameter of Binary Tree

    Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a b ...