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操作。

 
 
 
 
 
 

posted @ 2020-04-19 16:39  搬砖工奶爸  阅读(718)  评论(0编辑  收藏  举报