• redis list 基本操作


    写在前面的话

      本篇笔记写在笔者刚工作时。如有问题,请指教。

    简介

    list是链表,redis list的应用场景很多,也是Redis 最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用redis的list结构实现。redis的实现可以为一个双向链表,既可以支持反向查找和遍历,更方便操作。另外lrange命令,就是可以从某个元素开始读取多少个元素,可以实现分页,基于redis实现高性能分页。
     

    操作

    #lpush key value  给定key list集合左侧添加元素
    lpush 1992 123
    
    #rpush key value  给定key list集合右侧添加元素
    rpush 1992 124
    
    #len key  给定key list集合的元素数量
    llen 1992
    
    #lrange key start stop 给定元素key list结合 [start,stop]位置的元素
    [127.0.0.1:6379> lrange 1992 0 5
    1) "123"
    2) "124"
    3) "125"
    
    #lpop key  给定元素key list 左出栈一个元素,集合少一个元素
    lpop 1992
    
    #rpop key  给定元素key list 右出栈一个元素,集合少一个元素
    rpop 1992
    
    #lrem key count value 给定key list 集合 删除个数count元素,值为value 
    lrem 1992 1 123  #删除1992链表中值为123的元素
    
    #ltrim key start stop  #删除 给定key 链表的下标 [start,stop]元素
    ltrim 1992 0 10  
    
    #lset key index value # 修改 给定key list 集合 下标为index的值
    lset 1992 0 1234
    
    #sort key asc | desc #给定key list 排序    默认 asc
    sort 1992
     

    list实际使用场景-JAVA 存储公司组织结构

    package com.restart.redis;
    
    import java.io.Serializable;
    import java.util.Random;
    import com.alibaba.fastjson.JSONObject;
    import redis.clients.jedis.Jedis;
    
    public class RedisApi {
        
        public static Jedis getJedis() {
            Jedis jedis = new Jedis("127.0.0.1",6379);
            return jedis;
        }
        
        public static void listOp() {
            Jedis jedis = getJedis();
            String companyId = "cpy123";
            for (int i = 0; i < 5; i++) {
                Department department = new Department(i+"","depart" + i);
                jedis.lpush(companyId, JSONObject.toJSONString(department));
                int random = new Random().nextInt(10000);
                for(int k = 0 ;k < random ;k++) {
                    Person person = new Person("aust"+k,12,1+k);
                    jedis.lpush(i+"", JSONObject.toJSONString(person));
                }
            }
        }
        
        public static void main(String[] args) {
            listOp();
        }
    
    }
    
    
    class Person implements Serializable{
        
        private static final long serialVersionUID = 1L;
    
        private String name;
        
        private int age;
        
        private int sex;
        
        public Person() {}
        
        public Person(String name, int age, int sex) {
            super();
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
        }
    }
    
    class Department{
        
        private String id;
        
        private String name;
        public Department() {}
    }

    省略了get,set操作。

     
     
     
     
     
     

  • 相关阅读:
    Loadrunner的Tuxedo脚本分析,基本流程和基本函数介绍
    安装ArcGIS Server 9.2的一些建议
    .obj,.lib,.dll,.h之间的相互关系
    中国Albers 投影参数设置参考资料
    投影常识
    vc++2005环境中静态调用DLL(隐式)
    设置GDAL_DATA环境变量
    开源代码搜索利器Koders
    更正GDAL_DATA设置一文错误
    2007年的元宵节
  • 原文地址:https://www.cnblogs.com/--net/p/12732150.html
Copyright © 2020-2023  润新知