redis整合spring @Bean写法
jedis是一款java连接redis的客户端,spring基于jedis进行了封装,提供了简洁的操作redis的方法。
使用maven进行管理jar包之间的依赖:
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- <version>${spring-data-redis-version}</version>
- </dependency>
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>${redis.clients-jedis-version}</version>
- </dependency>
spring-data-redis需要依赖jedis包,事实上spring-data-redis pom文件中就自动包含了jedis的配置。http://www.mvnrepository.com/ 依据所需要的版本。
jedis客户端版本过高,我手动采用的是2.7.2的版本的jedis 或导致报错
spring-data-redis用的1.4.2的版本
讲jedis的版本号换位2.6.2以下就好了
(1)、JedisConnectionFactory redis连接工厂
类似于数据库连接池一样,redis客户端也建立一个连接工厂
- import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
- @Bean
- public JedisConnectionFactory jedisConnectionFactory() {
- JedisConnectionFactory connFactory = new JedisConnectionFactory();
- connFactory.setHostName("127.0.0.1"); //此处可以换成配置文件属性注入进来
- connFactory.setPort(6379);
- connFactory.setUsePool(true);//使用连接池
- JedisPoolConfig config=new JedisPoolConfig();config.setMaxTotal(100);config.setMaxIdle(30);config.setMinIdle(8);config.setMaxWaitMillis(30000);//向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。设为true,一个挂都不能用config.setTestOnBorrow(false);//向连接池“归还”链接时,是否检测“链接”对象的有效性。config.setTestOnReturn(true);connFactory.setPoolConfig(config);
- return connFactory;
- }
(2)、redis RedisTemplate
有了redis连接工厂,就要具体的redis session了,这些都是一个道理。
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- @Bean
- public RedisTemplate<String, String> redis() {
- RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
- redisTemplate.setConnectionFactory(jedisConnectionFactory());
- redisTemplate.setKeySerializer(new StringRedisSerializer());//key的序列化适配器
- redisTemplate.setValueSerializer(new StringRedisSerializer());//value的序列化适配器,也可以自己编写,大部分场景StringRedisSerializer足以满足需求了。
- return redisTemplate;
- }
(3)、操作redis
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.stereotype.Component;
- @Component
- public class CacheDemo {
- @Autowired private RedisTemplate<String, String> redis;
- public void set(String key,String value){
- redis.opsForValue().set(key, value);
- }
- }
(4)、总结。
要是一切事情都像这么简单就好了,不过spring已经封装的极其简洁,操作起来也非常方便。
redis.opsForValue() 封装操作strings
redis.opsForList() 封装操作list
redis.opsForSet() 封装操作sets
redis.opsForZSet() 封装操作sorted sets
redis.opsForHash() 封装操作hashs
redis的三种使用模式: http://blog.csdn.net/zhousenshan/article/details/51822253
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2015-12-14 Git git rebase 使用
2015-12-14 Spring task