Spring Data Redis ——ListRedis


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:application-redis.xml")
public class ListRedisTest {

    @Resource
    RedisTemplate redisTemplate;

    ListOperations listOperations;

    @Before
    public void load(){
        listOperations = redisTemplate.opsForList();
    }

    //List<V> range(K key, long start, long end);
    //返回存储在键中的列表的指定元素。偏移开始和停止是基于零的索引,其中0是列表的第一个元素(列表的头部),1是下一个元素
    public void range(){
        List list = listOperations.range("list", 0, -1);
        System.out.println(list);
    }

    //将所有指定的值插入存储在键的列表的头部。如果键不存在,则在执行推送操作之前将其创建为空列表
    @Test
    public void Push(){
        // Long leftPush(K key, V value);
        // (从左边插入)
        listOperations.leftPush("list","python");
        listOperations.leftPush("list","c++");

        // Long rightPush(K key, V value);
        // (从右边插入)
        listOperations.rightPush("list","java");

        //Long leftPushAll(K key, Collection<V> values);
        //Long leftPushAll(K key, V... values);
        //批量把一个集合|数组插入到列表中
        listOperations.leftPushAll("sea",new String[]{"fish","shrimp","crab"});
        System.out.println(listOperations.range("list",0,-1));
        System.out.println(listOperations.range("sea",0,-1));
    }

    /**
     * Long leftPushIfPresent(K key, V value);
     * 只有存在key对应的列表才能将这个value值插入到key所对应的列表中
     */
    @Test
    public void leftPushIfPresent(){
        String [] list = new String[]{"1","2","3"};
        System.out.println(listOperations.leftPushIfPresent("left","1"));//结果:0
    }

    //Long size(K key);
    //返回存储在键中的列表的长度。如果键不存在,则将其解释为空列表,并返回0。当key存储的值不是列表时返回错误。
    @Test
    public void size(){
        BoundListOperations sea = redisTemplate.boundListOps("sea");
        System.out.println(sea.size());
    }

    //V index(K key, long index);
    //根据下表获取列表中的值,下标是从0开始的
    public void index(){
        BoundListOperations sea = redisTemplate.boundListOps("sea");
        System.out.println(sea.index(1));
    }

    /**
     * void trim(K key, long start, long end);
     * 修剪现有列表,使其只包含指定的指定范围的元素,起始和停止都是基于0的索引
     * 从start 索引数开始,到end 索引数修剪,其他的全删除
     */
    @Test
    public void trim(){
        BoundListOperations sea = redisTemplate.boundListOps("sea");
        System.out.println(sea.range(0,-1));
        sea.trim(1,7);  //下标1-7的7个元素外全删除
        System.out.println(sea.range(0,-1));
        sea.trim(1,6);  //下标1-6的6个元素外全删除
        System.out.println(sea.range(0,-1));
        sea.trim(1,4);  //类推
        System.out.println(sea.range(0,-1));
        sea.trim(1,3);
        System.out.println(sea.range(0,-1));
        sea.trim(1,1);
        System.out.println(sea.range(0,-1));
    }

    /**
     * Long remove(K key, long count, Object value);
     * 从存储在键中的列表中删除等于值的元素的第一个计数事件。
     * 计数参数以下列方式影响操作:
     * count> 0:删除等于从头到尾移动的值的元素。(左往右 第一个
     * count <0:删除等于从尾到头移动的值的元素。(右往左 第一个
     * count = 0:删除等于value的所有元素。
     */
    @Test
    public void removeListTest(){
        System.out.println(listOperations.range("sea",0,-1));
        listOperations.remove("sea",1,"shrimp");
        System.out.println(listOperations.range("sea",0,-1));
    }

    //V leftPop(K key);
    //弹出最左边的元素,弹出之后该值在列表中将不复存在
    public void leftPop(){
        BoundListOperations sea = redisTemplate.boundListOps("sea");
        System.out.println(sea.leftPop());
        //-----分割线------
        System.out.println(redisTemplate.opsForList().leftPop("sea"));
    }
}

ListRedis 常用的函数,基本都有注释,demo → Spring-Data-Redis-Demo

转载处:https://www.cnblogs.com/EasonJim/p/7803067.html#autoid-2-7-0

猜你喜欢

转载自blog.csdn.net/idiot_qi/article/details/83002162
今日推荐