redis–13.1–jedis–整合Spring
代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/redis-learn/jedis
1、准备工作
1.1、redis.conf 配置修改
# 允许远程连接
# bind 127.0.0.1
# 允许远程连接
protected-mode no
1.2、引入依赖
<!-- Jedis所需要的jar包-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
2、测试–单机redis或者主从redis
2.1、连接测试
public class Demo01 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.187.138",6379);
String pong = jedis.ping();
System.out.println("连接成功:"+pong);
jedis.close();
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/1edf247d2d7445bb9de394614245967d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2V6Lqr6LS15peP55S3,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.2、redis数据类型测试
代码
public class Demo02 {
private static Jedis jedis;
public static void main(String[] args) {
System.out.println("-----------------获取 jedis-------------------");
getJedis();
System.out.println("-----------------通用key 测试-------------------");
keys_method();
System.out.println("-----------------String 测试-------------------");
string_method();
System.out.println("-----------------list 测试-------------------");
list_method();
System.out.println("-----------------set 测试-------------------");
set_method();
System.out.println("-----------------hash 测试-------------------");
hash_method();
System.out.println("-----------------zset 测试-------------------");
zset_method();
System.out.println("-----------------关闭 jedis-------------------");
close();
}
/**
* hash 测试
*/
public static void zset_method() {
jedis.zadd("zset01", 100, "li01");
jedis.zadd("zset01", 90, "li02");
jedis.zadd("zset01", 80, "li03");
jedis.zadd("zset01", 70, "li04");
Set<String> zrange = jedis.zrange("zset01", 0, -1);
for (String e : zrange) {
System.out.println("zset 测试-->" + e);
}
}
/**
* hash 测试
*/
public static void hash_method() {
jedis.hset("user", "userName", "lisi");
System.out.println("hash 测试-->" + jedis.hget("user", "userName"));
Map<String, String> map = new HashMap<String, String>();
map.put("phone", "1111");
map.put("address", "222");
map.put("email", "333");
jedis.hmset("user2", map);
List<String> result = jedis.hmget("user2", "phone", "address");
for (String element : result) {
System.out.println("hash 测试-->" + element);
}
}
/**
* set 测试
*/
public static void set_method() {
jedis.sadd("orders", "01");
jedis.sadd("orders", "02");
jedis.sadd("orders", "03");
jedis.sadd("orders", "04");
Set<String> smembers = jedis.smembers("orders");
for (String order : smembers) {
System.out.println("set 测试-->" + order);
}
// 删除orders集合中value=04的元素
Long srem = jedis.srem("orders", "04");
System.out.println("set 测试-->成功删除的数量" + srem);
}
/**
* list 测试
*/
public static void list_method() {
jedis.lpush("mylist", "a", "b", "c", "d");
List<String> list = jedis.lrange("mylist", 0, -1);
for (String element : list) {
System.out.println("list 测试-->" + element);
}
}
/**
* String 测试
*/
public static void string_method() {
jedis.mset("str1", "v1", "str2", "v2", "str3", "v3");
System.out.println("String 测试-->" + jedis.mget("str1", "str2", "str3"));
}
/**
* 通用key测试
*/
public static void keys_method() {
jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
Set<String> keys = jedis.keys("*");
System.out.println("通用key测试-->keys.size:" + keys.size());
for (String key : keys) {
System.out.println("通用key测试-->key:" + key);
}
System.out.println("通用key测试-->k1是否存在:" + jedis.exists("k1"));
System.out.println("通用key测试-->k1的过期时间:" + jedis.ttl("k1"));
System.out.println("通用key测试-->key的值:" + jedis.get("k1"));
}
public static void getJedis() {
jedis = new Jedis("192.168.187.138", 6379);
String pong = jedis.ping();
System.out.println("连接成功:" + pong);
}
public static void close() {
jedis.close();
}
}
结果
-----------------获取 jedis-------------------
连接成功:PONG
-----------------通用key 测试-------------------
通用key测试-->keys.size:3
通用key测试-->key:k3
通用key测试-->key:k1
通用key测试-->key:k2
通用key测试-->k1是否存在:true
通用key测试-->k1的过期时间:-1
通用key测试-->key的值:v1
-----------------String 测试-------------------
String 测试-->[v1, v2, v3]
-----------------list 测试-------------------
list 测试-->d
list 测试-->c
list 测试-->b
list 测试-->a
-----------------set 测试-------------------
set 测试-->04
set 测试-->02
set 测试-->03
set 测试-->01
set 测试-->成功删除的数量1
-----------------hash 测试-------------------
hash 测试-->lisi
hash 测试-->1111
hash 测试-->222
-----------------zset 测试-------------------
zset 测试-->li04
zset 测试-->li03
zset 测试-->li02
zset 测试-->li01
-----------------关闭 jedis-------------------
Process finished with exit code 0
3、测试–哨兵
package com.example.jedis.demo;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;
import java.util.HashSet;
import java.util.Set;
/**
* 描述该类
*
* @author <a href="920786312@qq.com">周飞</a>
* @class: Demo01
* @date 2022/2/2 15:23
* @Verson 1.0 -2022/2/2 15:23
* @see
*/
public class Demo03 {
public static void main(String[] args) {
Jedis jedis =getJedisFromSentinel();
jedis.set("k1", "v1");
System.out.println("哨兵测试:" + jedis.get("k1"));
jedis.close();
}
private static JedisSentinelPool jedisSentinelPool=null;
public static Jedis getJedisFromSentinel(){
if(jedisSentinelPool==null){
//redis主从机器访问密码
String password="123456";
//哨兵配置
Set<String> sentinelSet=new HashSet<>();
sentinelSet.add("192.168.187.139:26379");
sentinelSet.add("192.168.187.138:26380");
sentinelSet.add("192.168.187.138:26381");
JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10); //最大可用连接数
jedisPoolConfig.setMaxIdle(5); //最大闲置连接数
jedisPoolConfig.setMinIdle(5); //最小闲置连接数
jedisPoolConfig.setBlockWhenExhausted(true); //连接耗尽是否等待
jedisPoolConfig.setMaxWaitMillis(2000); //等待时间
jedisPoolConfig.setTestOnBorrow(true); //取连接的时候进行一下测试 ping pong
jedisSentinelPool=new JedisSentinelPool("appmaster",sentinelSet,jedisPoolConfig,password);
return jedisSentinelPool.getResource();
}else{
return jedisSentinelPool.getResource();
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/f86c9ea976d1404cbf4fdd8f09fa052c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2V6Lqr6LS15peP55S3,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
4、测试–集群
package com.example.jedis.demo;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.*;
/**
* 描述该类
*
* @author <a href="920786312@qq.com">周飞</a>
* @class: Demo01
* @date 2022/2/2 15:23
* @Verson 1.0 -2022/2/2 15:23
* @see
*/
public class Demo04 {
public static void main(String[] args) {
Set<HostAndPort> set = new HashSet<HostAndPort>();
set.add(new HostAndPort("192.168.187.139", 7000));
set.add(new HostAndPort("192.168.187.139", 7001));
set.add(new HostAndPort("192.168.187.139", 7002));
set.add(new HostAndPort("192.168.187.139", 7003));
set.add(new HostAndPort("192.168.187.139", 7004));
set.add(new HostAndPort("192.168.187.139", 7005));
int connectionTimeout = 2000;
int soTimeout = 2000;
int maxAttempts = 5;
// redis认证密码
String password = "123456";
// 连接
JedisCluster jedisCluster = new JedisCluster(set, connectionTimeout, soTimeout, maxAttempts, password,
new GenericObjectPoolConfig());
jedisCluster.set("k1", "v1");
System.out.println("集群测试:" + jedisCluster.get("k1"));
jedisCluster.close();
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/8be9b128c18e459195d16396510e051f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2V6Lqr6LS15peP55S3,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)