zoukankan      html  css  js  c++  java
  • 通过Jedis操作Redis

    package com.yh;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.params.SetParams;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class TestRedis {
    
        private Jedis jedis;
    
        @Before
        public void init() {
            //连接本地的 Redis 服务
            jedis = new Jedis("localhost");
            System.out.println("连接成功");
        }
    
        @Test
        public void testList() { // 有序,链表结构
            System.out.println(jedis.lpush("list1", "v1", "v2", "v3", "v4")); // 4 从左边添加
            System.out.println(jedis.rpush("list2", "v1", "v2", "v3", "v4")); // 4 从右边添加
            System.out.println(jedis.lrange("list1", 0, -1)); // [v4, v3, v2, v1]
            System.out.println(jedis.lrange("list2", 0, -1)); // [v1, v2, v3, v4]
            System.out.println(jedis.rpop("list1")); // v1 删除最后一个元素
            System.out.println(jedis.lpop("list2")); // v1 删除第一个元素
        }
    
        @Test
        public void testSet() { // 无序,不可重复
            jedis.sadd("set1", "v1", "v2", "v3", "v4");
            System.out.println(jedis.smembers("set1")); // 获取所有成员
            System.out.println(jedis.sismember("set1", "v1")); // 判断是否存在
    
            jedis.sadd("set2", "v1", "v3", "v5", "v7");
            System.out.println(jedis.sdiff("set1", "set2")); // 输出第一个有,后面没有的(差集)
            System.out.println(jedis.sinter("set1", "set2")); // 输出两个都有的(交集)
            System.out.println(jedis.sunion("set1", "set2")); // 输出两个总和(并集)
        }
    
        @Test
        public void testZSet() { // 有序集合
            Map<String, Double> map = new HashMap<>();
            map.put("k1", 20d);
            map.put("k2", 30d);
            map.put("k3", 15d);
            map.put("k4", 25d);
            System.out.println(jedis.zadd("zset", map)); // 4
            System.out.println(jedis.zrange("zset", 0, -1)); // [k3, k1, k4, k2]
            System.out.println(jedis.zrangeWithScores("zset", 0, -1)); // [[k3,15.0], [k1,20.0], [k4,25.0], [k2,30.0]]
        }
    
        @Test
        public void testHash(){
            Map<String, String> map = new HashMap<>();
            map.put("k1", "v1");
            map.put("k2", "v2");
            map.put("k3", "v3");
            System.out.println(jedis.hset("hash", "","")); // 4
            System.out.println(jedis.hkeys("hash")); // [k3, k1, k4, k2]
            System.out.println(jedis.hvals("hash")); // [k3, k1, k4, k2]
            System.out.println(jedis.hgetAll("hash")); // [k3, k1, k4, k2]
        }
    
        @Test
        public void testString() {
            System.out.println(jedis.set("k1", "v1")); // OK
            System.out.println(jedis.get("k1")); // v1
            System.out.println(jedis.del("k1")); // 1
            System.out.println(jedis.append("k1", "v12")); // 3 key不存在时,append相当于set
            System.out.println(jedis.append("k1", "v123")); // 7
            System.out.println(jedis.get("k1")); // v12v123
            System.out.println(jedis.strlen("k1")); // 7
            System.out.println(jedis.mset("k1", "v1", "k2", "v2", "k3", "v3")); // OK 和逐条添加的不同点在于这是原子性操作
            System.out.println(jedis.mget("k1", "k2", "k3")); // [v1,v2,v3]
            System.out.println(jedis.setnx("k1", "v4")); // 0 先判断key是否存在,存在则不创建
            System.out.println(jedis.setex("k1", 66, "v4")); // OK 增加过期时间(秒)
            System.out.println(jedis.ttl("k1")); // 返回距离过期的剩余时间
    
            SetParams setParams = new SetParams(); // 相当于设置一个规范,可应用到其他键值对
            setParams.ex(100); // 过期时间100s
            setParams.nx(); // 创建键值对之前先判断是否存在,存在则不创建
            System.out.println(jedis.set("k1", "v1", setParams));
        }
    
        @Test
        public void testKey() {
            System.out.println(jedis.keys("*")); // 查找所有key,参数为正则表达式,不推荐使用
            System.out.println(jedis.exists("k1")); // 判断key是否存在
            System.out.println(jedis.expire("k1", 60)); // 设值过期时间
            System.out.println(jedis.incr("count")); // 相当于++
            System.out.println(jedis.decr("count")); // 相当于--
            System.out.println(jedis.incrBy("count", 2)); // 相当于+=2
            System.out.println(jedis.decrBy("count", 2)); // 相当于-=2
        }
    
        @After
        public void close() {
            jedis.close();
        }
    
    }
  • 相关阅读:
    在线服务之性能测试工具科普
    在线服务之socket编程科普
    Hadoop发展历史简介
    TCP/IP协议知识科普
    操作系统之内存管理科普
    操作系统之进程管理科普
    开源PaaS产品介绍
    并行计算知识科普
    IaaS层市场科普
    WCF服务开发与调用的完整示例
  • 原文地址:https://www.cnblogs.com/YeHuan/p/12268777.html
Copyright © 2011-2022 走看看