Redis的安装及配置
-
redis server的安装及配置
打开链接:https://redis.io/download 下载想要下载的版本,下载完成后是这样的:
下载完成后就进行配置:打开redis.windows.conf进行配置,里面的配置是根据实际上业务的需求来配置的,详细的配置可以打开以下链接进行参考配置:
-
但是一般都要配置连接密码
定位到requirepass foobared下,将foobared换成自己设定的密码。这里需要注意,下次我们在进行登录的时候需要通过以下cmd命令运行,这样可以读取到我们配置好的文件。redis-server.exe redis.windows.conf
-
redis client的安装
这里推荐一个redis 客户端:Another-Redis-Desktop-Manager,这个客户端是由国人开发且开源的,界面比较简洁看着非常舒服。
github地址:Another-Redis-Desktop-Manager 的开源github地址
安装完成后就可以进行连接redis
-
添加依赖包
<!-- redis依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency>
-
配置redis连接信息
spring: # 连接redis redis: host: localhost port: 6379 password: aaaa timeout: 10000 ...
-
使用redisTemplate对redis进行操作,许多操作redis的方法都在redisTemplate这个类中,如果要看如何实现可以查看此类的源码。
@Autowired private RedisTemplate redisTemplate; // 注入redisTemplate @Override public Integer deleteItems() { // 自减 Long value = redisTemplate.opsForValue().decrement("itemNumber"); return value.intValue(); } @Override public Integer selectItems() { return (Integer) redisTemplate.opsForValue().get("itemNumber"); }
-
大家做完以上步骤之后可能会出现一个问题,就是无论如何怎么读取key为string类型的value都是null,这是因为redisTemplate默认使用的序列化是JdkSerializationRedisSerializer类,但是我们存入数据的时候是通过StringRedisSerializer序列化类去存储的,所以因为使用的序列化类不一样,导致取不出value,所以我们可以通过创建一个配置类去生成一个序列化类为StringRedisSerializer的redisTemplate。
@Configuration public class RedisConfiguration { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
或者直接注入一个
@Autowired private StringRedisTemplate stringRedisTemplate;