Springboot整合:Redis------->jedis,Lettuce

jedis:采用的直连,多个线程操作的话是不安全的,如果想避免不安全的,使用jedis pool 连接池!更像 Bio模式

lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,更像Nio模式

<!--操作redis,xml中的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
package com.example.jedis.service;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

import java.net.UnknownHostException;

@Configuration//redis配置类
public class RedisConfig {

    //编写我们自己的redisTemplate


    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
                 throws UnknownHostException
    {
        RedisTemplate<String,Object> template = new RedisTemplate<>();
        //自动生成对象
        Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>();
        //配置具体的序列化方式
        template.setKeySerializer(objectJackson2JsonRedisSerializer);

        template.setConnectionFactory(redisConnectionFactory);

        return template;
    }





}

在这里插入图片描述

package com.example.jedis.controller;

import redis.clients.jedis.Jedis;

import java.util.Set;

//判断key* 和Set基本的方法
public class jedis {


    //redis
    public static void main(String[] args) {
        //1. new Jedis对象即可 连接jedis
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //jedis所有的指令都是这块点的方法
        jedis.ping();
        System.out.println(jedis.ping());
        //输出结果PONG 证明连接成功


        System.out.println("清空数据:"+jedis.flushDB());
        System.out.println("判断某个键是否存在:"+jedis.exists("username"));//如果username这个值存在就把
        System.out.println("新增<'username','chen'>的键值队"+jedis.set("username","chen"));//"username","chen"写入
        System.out.println("新增<'password','password'>的键值队"+jedis.set("password","password"));
        System.out.println("系统中所有的键如下:");
        Set<String> keys =jedis.keys("*");
        System.out.println(keys);

        System.out.println("删除键password:"+jedis.del("password"));
        System.out.println("判断键password是否存在"+jedis.exists("password"));
        System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));
        System.out.println("随机返回key空间的一个:"+jedis.randomKey());
        System.out.println("重命名key:"+jedis.rename("username","name"));
        System.out.println("按索引查询:"+jedis.select(0));
        System.out.println("删除当前选择数据库中的所有key"+jedis.flushDB());
        System.out.println("返回当前数据库中的key的数目:"+jedis.dbSize());
        System.out.println("删除所有数据库中的所有key:"+jedis.flushAll());

    }

}

RedisProperties 源码分析:

public class RedisProperties {
 
	/**
	 * Database index used by the connection factory.
	 */
	private int database = 0;
 
	/**
	 * Connection URL. Overrides host, port, and password. User is ignored. Example:
	 * redis://user:password@example.com:6379
	 */
	private String url;
 
	/**
	 * Redis server host.
	 */
	private String host = "localhost";
 
	/**
	 * Login password of the redis server.
	 */
	private String password;
 
	/**
	 * Redis server port.
	 */
	private int port = 6379;
 
	/**
	 * Whether to enable SSL support.
	 */
	private boolean ssl;
 
	/**
	 * Connection timeout.
	 */
	private Duration timeout;
 
	/**
	 * Client name to be set on connections with CLIENT SETNAME.
	 */
 
         // 略。。。
 
}

RedisAutoConfiguration 源码分析:

 
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
 
	@Bean
	@ConditionalOnMissingBean(name = "redisTemplate")
	public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
          // 默认的RedisTemplaye 没有过多的设置,redis的对象都是需要序列化的
          // 两个泛型都是Object,Object类型,我们后使用需要强制转换 <String,Object>
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}
         // 由于String是redis是最常使用的类型,所以单独提出来一个bean
	@Bean
	@ConditionalOnMissingBean
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
		StringRedisTemplate template = new StringRedisTemplate();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值