redis--13.1--jedis--整合Spring

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shiro-redis-spring-boot-starter是一个用于集成Apache Shiro和RedisSpring Boot Starter项目。Apache Shiro是一个强大而灵活的Java安全框架,用于身份验证、授权和会话管理等安全功能。而Redis是一个高性能的内存数据库,其具有快速的数据存取能力和持久化支持。 shiro-redis-spring-boot-starter提供了一种简化和快速集成Shiro和Redis的方式,使得在Spring Boot应用中实现安全功能变得更加容易。通过使用该Starter,我们可以方便地将Shiro的会话管理功能存储到Redis中,从而支持分布式环境下的会话共享和管理。 使用shiro-redis-spring-boot-starter可以带来以下好处: 1. 分布式环境的会话共享:通过将Shiro的会话数据存储到Redis中,不同的应用节点可以共享同一个会话,从而实现分布式环境下的会话管理和跨节点的身份验证和授权。 2. 高可用性和性能:Redis作为一个高性能的内存数据库,具有出色的数据读写能力和持久化支持,可以提供可靠的会话存储和高性能的数据访问能力。 3. 简化配置和集成:shiro-redis-spring-boot-starter提供了封装好的配置和集成方式,减少了我们自己实现集成的复杂性和工作量。 总结来说,shiro-redis-spring-boot-starter为我们提供了一种简化和快速集成Shiro和Redis的方式,使得在Spring Boot应用中实现安全功能变得更加容易和高效。通过它,我们可以实现分布式环境下的会话共享和管理,提供高可用性和性能的数据存取能力,同时简化了配置和集成的复杂性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值