秒懂Redis:list 数据类型

  1. list 介绍:
    1. list 可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获得列表的某一片段
    2. 列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为 O(1),获取数据越接近两端的元素速度就越快
    3. 即使有上千万条数据,获取头部或尾部的 10 条记录也是极快的
  2. 命令:
    1. 向列表两端添加元素:
      lpush key  value  value ...
      
      rpush key value value ...
    2. 从列表两端弹出元素:
      lpop  key    #从列表左边弹出一个元素,返回被移除的元素值
      rpop  key    #从列表右边弹出一个元素,返回被移除的元素值
    3. 获取列表中元素的个数
      llen  key
    4. 获取列表片段:
      1. lrange 命令是列表类型最常用的命令之一,获取列表中的某一片段,将返回 start、stop 之间的所有元素(包含两端的元素),索引从 0 开始
      2. 索引可以是负数,如:-1 代表最后的一个元素
        lrange key  0  -1
    5. 删除列表中指定的值:
      lrem  key  count  value
      1. lrem 命令会删除列表中前 count 个值为 value 的元素,返回实际删除的元素个数。根据 count 值不同,该命令的执行方法会后所不同:
        1. count > 0 时:lrem 会从列表的最左边开始删除
        2. count < 0 时:lrem 会从列表的最右边开始删除
        3. count = 0 时:lrem 删除所有值为 value 的元素
    6. 获取 / 设置指定索引的元素值:
      lindex key index     #获取指定索引的元素值
      
      lset  key  index  value    #替换指定索引的元素值
    7. 只保留列表指定片段:
      ltrim  start  stop        #保留指定范围的元素值

    8. 向里列表中插入元素:
      linsert  key  before|after pivot value    #在列表之前或之后插入值
      1. 将元素从一个列表转移到另一个列表中:
        rpoplpush  source  destionation    #将一个列表转移到另一个列表中

    9. 常用操作:
      package com.qcby.config.test;
      
      import com.qcby.config.RedisUtil;
      import org.junit.Test;
      import redis.clients.jedis.Jedis;
      
      import java.util.List;
      
      public class ListTest {
      
          @Test
          public void testList(){
              Jedis jedis = RedisUtil.getJedis();
      
              try {
                  System.out.println("移除所有内容:" + jedis.del("messages"));
                  jedis.rpush("messages","Hello how are you?");
                  jedis.rpush("messages","Fine thanks");
                  jedis.rpush("messages", "NoSQL");
      
                  //取出所有的数据 lrange 是范围取出
                  //第一个是 key 第二个是起始位置 第三个是结束位置  -1:表示所有
                  List<String> values = jedis.lrange("messages",0,-1);
                  System.out.println("所有的 value:" + values);
      
                  //清空数据
                  System.out.println("清空数据:" + jedis.flushDB());
                  //添加数据
                  jedis.lpush("lists","vector");
                  jedis.lpush("lists", "ArrayList");
                  jedis.lpush("lists", "LinkedList");
      
                  System.out.println("数组长度为:" + jedis.llen("lists"));
      
                  System.out.println("获取字符串:" + jedis.lrange("lists",0,3));
      
                  System.out.println("修改列表中单个值:" + jedis.lset("lists",0,"hello list"));
      
                  System.out.println("获取指定下标的值:" + jedis.lindex("lists",2));
      
                  System.out.println("删除指定下标的值:" + jedis.lrem("lists",0,"vector"));
      
                  System.out.println("删除区间以外的数据:" + jedis.ltrim("lists",0,1));
      
                  System.out.println("列表出栈:" + jedis.lpop("lists"));
      
                  System.out.println("整个列表的值:" + jedis.lrange("lists",0,-1));
              }catch (Exception e){
                  e.printStackTrace();
              }finally {
                  RedisUtil.closeJedis(jedis);
              }
          }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值