美文网首页
redis的使用

redis的使用

作者: 寻Sweet | 来源:发表于2019-03-30 23:54 被阅读0次

1.Redis的list类型其实就是一个每个子元素都是string类型的双向链表。链表的最大长度是(2的32次方)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。

有意思的是list的pop操作还有阻塞版本的,当我们[lr]pop一个list对象时,如果list是空,或者不存在,会立即返回nil。但是阻塞 版本的b[lr]pop可以则可以阻塞,当然可以加超时时间,超时后也会返回nil。为什么要阻塞版本的pop呢,主要是为了避免轮询。举个简单的例子如 果我们用list来实现一个工作队列。执行任务的thread可以调用阻塞版本的pop去获取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候 工作线程可以立即返回,也可以避免轮询带来的延迟。说了这么多,接下来看一下实际操作的方法吧:

1、lpush

在key对应list的头部添加字符串元素:
redis 127.0.0.1:6379> lpush mylist "world"
(integer) 1
redis 127.0.0.1:6379> lpush mylist "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379>
在此处我们先插入了一个world,然后在world的头部插入了一个hello。其中lrange是用于取mylist的内容。

2、rpush

在key对应list的尾部添加字符串元素
redis 127.0.0.1:6379> rpush mylist2 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist2 "world"
(integer) 2
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379>
在此处我们先插入了一个hello,然后在hello的尾部插入了一个world。

3、linsert

在key对应list的特定位置之前或之后添加字符串元素:
redis 127.0.0.1:6379> rpush mylist3 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist3 "world"
(integer) 2
redis 127.0.0.1:6379> linsert mylist3 before "world" "there"
(integer) 3
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "there"
3) "world"
redis 127.0.0.1:6379>
在此处我们先插入了一个hello,然后在hello的尾部插入了一个world,然后又在world的前面插入了there。
4、lset
设置list中指定下标的元素值(下标从0开始):
redis 127.0.0.1:6379> rpush mylist4 "one"
(integer) 1
redis 127.0.0.1:6379> rpush mylist4 "two"
(integer) 2
redis 127.0.0.1:6379> rpush mylist4 "three"
(integer) 3
redis 127.0.0.1:6379> lset mylist4 0 "four"
OK
redis 127.0.0.1:6379> lset mylist4 -2 "five"
OK
redis 127.0.0.1:6379> lrange mylist4 0 -1

  1. "four"
  2. "five"
  3. "three"
    redis 127.0.0.1:6379>
    在此处我们依次插入了one,two,three,然后将标是0的值设置为four,再将下标是-2的值设置为five。
    5、lrem

从key对应list中删除count个和value相同的元素。

count>0时,按从头到尾的顺序删除,具体如下:
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 2
redis 127.0.0.1:6379> rpush mylist5 "foo"
(integer) 3
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 4
redis 127.0.0.1:6379> lrem mylist5 2 "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist5 0 -1

  1. "foo"
  2. "hello"
    redis 127.0.0.1:6379>

count<0时,按从尾到头的顺序删除,具体如下:
redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 2
redis 127.0.0.1:6379> rpush mylist6 "foo"
(integer) 3
redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 4
redis 127.0.0.1:6379> lrem mylist6 -2 "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist6 0 -1

  1. "hello"
  2. "foo"
    redis 127.0.0.1:6379>
     count=0时,删除全部,具体如下:
    redis 127.0.0.1:6379> rpush mylist7 "hello"
    (integer) 1
    redis 127.0.0.1:6379> rpush mylist7 "hello"
    (integer) 2
    redis 127.0.0.1:6379> rpush mylist7 "foo"
    (integer) 3
    redis 127.0.0.1:6379> rpush mylist7 "hello"
    (integer) 4
    redis 127.0.0.1:6379> lrem mylist7 0 "hello"
    (integer) 3
    redis 127.0.0.1:6379> lrange mylist7 0 -1
  3. "foo"
    redis 127.0.0.1:6379>

相关文章

  • 干货!带你了解为什么那么多开源项目都是用Redis!

    很多开源项目中都使用了redis,这些项目为什么使用redis?使用redis有什么好处?怎么使用redis?带着...

  • Redis 初次见面

    目录 Redis 特性 使用场景 初次使用安装(Linux)配置启动 redis 的 3 种方法使用 redis ...

  • Redis一致性hash算法

    一、Redis集群的使用 我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单...

  • Spring Cache与Redis结合使用

    Spring Cache与Redis结合使用 Spring Cache与Redis结合使用Redis创建Sprin...

  • redis学习历程

    Redis初识 Redis安装与启动 Redis 常用API 理解与使用 Redis java客户端使用(单机版,...

  • Spring Data Redis - Redis Reposi

    使用Redis Repositories可以方便的在redis中用Redis Hash的方式存储各种对象类型。使用...

  • redis 使用历程

    redis 使用历程 为什么使用redis缓存? 答:之前是没有使用redis的,直接用Java代码写类缓存功能,...

  • Redis中调用Lua脚本阻塞

    在高并发系统中,redis的使用会比较频繁,lua脚本让redis的使用更加灵活。redis中使用lua脚本的好处...

  • redis 集群搭建

    Redis集群 使用redis做缓存工具 实现系统高可用,redis需要做主备。使用redis做分片集群。 向业务...

  • redis第二章:架构和通信

    redis使用和通信 redis-cli使用 redis是C/S架构,redis-cli便是用于连接redsi s...

网友评论

      本文标题:redis的使用

      本文链接:https://www.haomeiwen.com/subject/ciuebqtx.html