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());
}
}