使用Jedis操作redis数据库(SpringBootTest)

本文档详细介绍了如何在Java项目中利用Jedis与SpringBootTest进行Redis数据库的操作,包括引入相关依赖、编写测试代码以及设计具体的测试类来验证方法的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.7.1</version>
</dependency>

2.编写测试代码

public class MyJedis {
    public static void main(String[] args) {
        Jedis conn = new Jedis("192.168.230.180",6379);
        String a  =conn.ping();
        System.out.println(a);
    }
}

输出结果为PONG证明连接无误!

3.编写测试类,测试具体的方法

package com.yun.redis.mytest;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * @FileName: StringTest
 * @Description:
 * @Author: zyk
 * @createTime: 2022/1/6 17:05
 * @version: 1.0
 */
@SpringBootTest
@Slf4j
public class StringTest {
    private Jedis jedis = null;
    @BeforeEach
    public void init() {
        //1.获取连接
        jedis = new Jedis("192.168.230.180", 6379);
        log.info("字符串测试开始-------------------------");
    }
    @AfterAll
    public void dead() {
        log.info("字符串测试结束-------------------------");
        // 3.关闭连接
        jedis.close();
    }
    /**
     * @Author: zyk
     * @Description: 键操作
     * @Date: 2022/1/6 17:25
     * @Param:
     * @return:
     */
    @Test
    public void keyTest() {
        //清空数据
        jedis.flushDB();
        //判断某个键是否存在
        jedis.exists("flower");
        //新增键值对
        jedis.set("flower", "lily");
        //获取所有key
        Set<String> keys = jedis.keys("*");
        //删除键为key的数据项
        jedis.del("flower");
        //设置键为key的过期时间为i秒
        jedis.expire("testTime", 100);
        //获取键为key的数据项的剩余生存时间
        jedis.ttl("testTime");
        //移除键为key属性项的生存时间限制
        jedis.persist("testTime");
        //查看键为key所对应的value的数据类型
        jedis.type("testTime");
    }
    /**
     * @Author: zyk
     * @Description: 字符串操作
     * @Date: 2022/1/6 17:25
     * @Param: []
     * @return: void
     */
    @Test
    public void stringTest() {
        //增加(或者覆盖)数据项
        jedis.set("fruit", "apple");
        //重复不插入
        jedis.setnx("fruit", "banana");
        //增加数据项并设置有效时间
        jedis.setex("flower", 10, "lily");
        //删除键为key的数据项
        jedis.del("fruit");
        //获取键为key对应的value
        jedis.get("flower");
        //在key对应的value后面拓展字符s
        jedis.append("fruit", "I love this");
        //增加多个键值对
        jedis.mset("key1", "value1", "key2", "value2");
        //获取多个key对应的value
        jedis.mget("key1", "key2");
        //删除多个key对应的数据项
        jedis.del(new String[]{"key1", "key2"});
        //获取key对应的value并更新value
        jedis.getSet("key1", "niuniu");
        //获取key对应的value第i到j字符
        jedis.getrange("key1", 1, 3);
    }
    /**
     * @Author: zyk
     * @Description: 整数和浮点数操作
     * @Date: 2022/1/6 17:33
     * @Param:
     * @return:
     */
    @Test
    public void intTest() {
        //增加(或者覆盖数据项)
        jedis.set("mynum", "3");
        //获取键为key对应的value
        jedis.get("mynum");
        //将key对应的value自加1
        jedis.incr("mynum");
        //将key对应的value自加n
        jedis.incrBy("mynum", 4);
        //将key对应的value自减1
        jedis.decr("mynum");
        //将key对应的value自减n
        jedis.decrBy("mynum", 2);
    }
    /**
     * @Author: zyk
     * @Description: 列表操作
     * @Date: 2022/1/6 17:38
     * @Param:
     * @return:
     */
    @Test
    public void listTest(){
        //添加一个list
        jedis.lpush("myList","a","b","c","d");
        //往key对应的List左插入一个元素
        jedis.lpush("myList","m");
        //获取key对应的List区间[i.j]元素
        jedis.lrange("myList",0,3);
        //删除指定元素val个数num
        jedis.lrem("myList",2,"c");
        //删除list区间[i,j]之外的元素
        jedis.ltrim("myList",1,3);
        //key对应list左出栈一个元素
        jedis.lpop("myList");
        //key对应list右插入一个元素
        jedis.rpush("myList","z");
        //key对应list右出栈一个元素
        jedis.rpop("myList");
        //修改key对应的list指定下标index的元素
        jedis.lset("myList",2,"j");
        //获取key对应list长度
        jedis.llen("myList");
        //获取key对应list下标为index的元素
        jedis.lindex("myList",2);
        //把key对应list里面的元素从小到大排序
        jedis.sort("myList");
    }
    /**
     * @Author: zyk
     * @Description: set集合操作
     * @Date: 2022/1/6 17:49
     * @Param:
     * @return:
     */
    @Test
    public void setTest(){
        //添加一个set
        jedis.sadd("mySet","1","2","5","6","44");
        //获取key对应set的所有元素
        jedis.smembers("mySet");
        //删除一个值为val的元素
        jedis.srem("mySet","2");
        //删除值为v1,v2。。。的元素
        jedis.srem("mySet","2","5");
        //随机出栈set里面的一个元素
        jedis.spop("mySet");
        //获取set中元素的个数
        jedis.scard("mySet");
        //将元素val从集合k1剪切到集合k2
        jedis.smove("mySet","mySetCopy","44");
        //获取集合k1和k2的交集
        jedis.sinter("mySet","mySetCopy");
        //获取集合k1和k2的并集
        jedis.sunion("mySet","mySetCopy");
        //获取集合k1和k2的差集
        jedis.sdiff("mySet","mySetCopy");
    }
    /**
     * @Author: zyk
     * @Description: 哈希操作
     * @Date: 2022/1/6 17:58
     * @Param:
     * @return:
     */
    @Test
    public void hashTest(){
        Map<String,String>map  =new HashMap<>();
        map.put("name","zhangsan");
        map.put("age","23");
        //添加一个Hash
        jedis.hmset("myHash", map);
        //往Hash中插入一个元素
        jedis.hset("myHash","email","324253@qq.com");
        //获取Hash所有元素
        Map<String, String> myHash = jedis.hgetAll("myHash");
        //获取Hash所有元素的keys
        Set<String> myHashKeys = jedis.hkeys("myHash");
        //获取Hash所有元素的value
        List<String> myHash1 = jedis.hvals("myHash");
        //把hash中key对应元素val+=i
        jedis.hincrBy("myHash","age",3);
        //从hash中删除一个或者多个元素
        jedis.hdel("myHash","name","age");
        //获取hash中元素个数
        jedis.hlen("myHash");
        //判断Hash是否存在key对应元素
        jedis.hexists("myHash","name");
        //获取hash中一个或者多个元素value
        jedis.hmget("myHash","name","age");
    }
    /**
     * @Author: zyk
     * @Description: 有序集合操作zsort
     * @Date: 2022/1/6 18:30
     * @Param:
     * @return:
     */
    @Test
    public void zSortTest(){
        Map<String,Double>map=new HashMap<>();
        map.put("zhangsan",100.0);
        map.put("lisi",88.2);
        map.put("xiaoli",95.5);
        //添加一个ZSet
        jedis.zadd("myZSet",map);
        //往ZSet插入一个元素(Score-Val)
        jedis.hset("myZSet","xiaoliu","45.5");
        //获取ZSet里下标[i,j]区间元素val
        jedis.zrange("myZSet",0,2);
        //获取ZSet里下标[i,j]区间元素(Score-Val)
        jedis.zrangeWithScores("myZSet",0,2);
        //获取ZSet里score[i,j]区间元素val
        jedis.zrangeByScore("myZSet",0,2);
        //获取ZSet里score[i,j]区间元素(Score-Val)
        jedis.zrangeByScoreWithScores("myZSet",0,2);
        //获取ZSet里val为value元素的score
        jedis.zscore("myZSet","xiaoli");
        //获取ZSet里val为value元素的score排名
        jedis.zrank("myZSet","xiaoli");
        //删除ZSet里val为value的元素
        jedis.zrem("myZSet","xiaoli");
        //获取ZSet的元素个数
        jedis.zcard("myZSet");
        //获取ZSet中score在[i,j]区间元素个数
        jedis.zcount("myZSet",0,2);
        //把ZSet中val为value的元素score+=n
        jedis.zincrby("myZSet",10,"xiaoli");
    }
    /**
     * @Author: zyk
     * @Description: 排序操作
     * @Date: 2022/1/6 18:48
     * @Param:
     * @return:
     */
    @Test
    public void sortTest(){
        //生成一个排序对象
        SortingParams sortingParams = new SortingParams();
        //队列按首字母a-z排序
        jedis.sort("myList",sortingParams.alpha());
        //队列按数字升序排序
        jedis.sort("myList",sortingParams.asc());
        //队列按数字降序排序
        jedis.sort("myList",sortingParams.desc());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的tiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值