Redis的几种数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的几种数据类型相关的知识,希望对你有一定的参考价值。

package com;

import static org.junit.Assert.fail;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;

/**
 * REDIS的几种数据结构
 * @author lenovo
 *
 */


public class Demo2 {

    /**
     * 字符串类型
     */
    @Test
    public void testString()
    {
        Jedis jedis = new Jedis("192.168.126.129",6379);
        Pipeline pipeline = jedis.pipelined();
        
        System.out.println(pipeline.set("a", "1")); //打印Response string
        System.out.println(pipeline.set("b", "2"));
        System.out.println(pipeline.set("c", "3"));
        System.out.println(pipeline.set("a", "11"));
        System.out.println(pipeline.set("c", "333")); //回覆盖之前的数据
       // List<Object> results = pipeline.syncAndReturnAll();//管道提交并返回
        pipeline.sync();//管道提交,在提交之前不能进行get查询操作
        System.out.println(jedis.get("c")); //返回具体value
        System.out.println(jedis.get("d")); //如果此key不存在则返回null
        
        System.out.println( jedis.del("a")); //删除成功返回1
        System.out.println( jedis.del("d"));//删除不存在的key返回0
        jedis.disconnect();
    }
    
    /**
     * 列表类型
     */
    @Test
    public void testList()
    {
        Jedis jedis = new Jedis("192.168.126.129",6379);
        Pipeline pipeline = jedis.pipelined();
                
        pipeline.rpush("mylist", "a");//将数据写入列表的右侧,lpush将数据写入列表左侧
        pipeline.rpush("mylist", "b");
        pipeline.rpush("mylist", "c");
        pipeline.rpush("mylist", "a"); //同一个value可重复出现
        pipeline.sync(); //提交
        
        System.out.println(jedis.lrange("mylist", 0, 1));//返回指定x到y之间的数据包含xy位置
        System.out.println(jedis.lrange("mylist", 0, -1));//返回全部数据
        
        System.out.println(jedis.lindex("mylist", 0));//返回指定位置的数据
        System.out.println(jedis.lindex("mylist", 110));//返回指定位置的数据,此位置不存在则返回null
        
        System.out.println(jedis.lpop("mylist")); //返回列表左侧的第一个数据,并在列表里删除此数据
        
        jedis.del("mylist"); //删除列表
        jedis.disconnect();
        
    }
    
    /**
     * 集合类型
     */
    @Test
    public void testSet()
    {
        Jedis jedis = new Jedis("192.168.126.129",6379);
        Pipeline pipeline = jedis.pipelined();
        
        System.out.println(pipeline.sadd("mySet", "a"));
        System.out.println( pipeline.sadd("mySet", "b"));
        System.out.println(pipeline.sadd("mySet", "c"));
        System.out.println(pipeline.sadd("mySet", "a")); //重复元素不会被添加
        
        pipeline.sync();
        
        System.out.println(jedis.smembers("mySet")); //返回的顺序与添加的顺序相反,添加abc返回cba
        
        System.out.println(jedis.sismember("mySet", "a"));//判断此集合是否存在a元素,存在返回true
        System.out.println(jedis.sismember("mySet", "x")); // 不存在返回false
        
        System.out.println(jedis.srem("mySet", "a"));//判断此集合里是否存在a,如果存在则将a移除,并返回1
        System.out.println(jedis.srem("mySet", "x"));//移除不存在的元素,返回0
        jedis.disconnect();
    }
    
    /**
     * 散列类型
     */
    @Test
    public void testHash()
    {
        Jedis jedis = new Jedis("192.168.126.129",6379);
        Pipeline pipeline = jedis.pipelined();
        
        pipeline.hset("myHash", "a", "1");
        pipeline.hset("myHash", "b", "2");
        pipeline.hset("myHash", "c", "3");
        pipeline.hset("myHash", "a", "4"); //(a,1)将被覆盖成(a,4)
        
        pipeline.sync();
        
        System.out.println(jedis.hgetAll("myHash")); //获取此散列全部key value
        
        System.out.println(jedis.hget("myHash", "a")); //返回此散列里具体key的value
        System.out.println(jedis.hget("myHash", "x"));//此KEY不存在则返回null
        
        jedis.disconnect();
    }
    
    /**
     * 有序集合
     * 有序集合的value必须为浮点类型
     */
    @Test
    public void voidZset()
    {
        Jedis jedis = new Jedis("192.168.126.129",6379);
        Pipeline pipeline = jedis.pipelined();
        
        pipeline.zadd("myZset", 1.0,"a");
        pipeline.zadd("myZset", 2.0,"b");
        pipeline.zadd("myZset", 3.0,"c");
        pipeline.zadd("myZset", 0.1,"a"); //a将被覆盖为0.1
        pipeline.zadd("myZset", 2.0,"x");
        
        pipeline.sync();
        
        System.out.println(jedis.zrange("myZset", 0, -1)); //返回下标a到b个数据,-1=返回全部。按照数值从小到大排序
        System.out.println(jedis.zrangeByScore("myZset", -10, 2.0));//返回此有序集合里分值在a到b之间的数据,包含a,b.按照从小到大排序
        jedis.disconnect();
    }
    
    
    @Test
    public void test() {
        fail("Not yet implemented");
    }

}

 

以上是关于Redis的几种数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Redis和MySQL数据一致中出现的几种情况

Laravel:如何在控制器的几种方法中重用代码片段

redis持久化的几种方式

redis持久化的几种方式

redis持久化的几种方式

redis持久化的几种方式