Redis介绍
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value非关系性数据库(NoSql)。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis安装
我这里使用的是Ubuntu18.04安装redis。
- 更新源
sudo apt-get update
- 安装redis-server
sudo apt-get install redis-server
检查安装状态
netstat -ano | grep 6379
安装成功情况
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN off (0.00/0/0)
安装失败情况
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: enabled) Active: activating (start) since Wed 2019-10-30 11:03:02 CST; 22s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 21741 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 2124) CGroup: /system.slice/redis-server.service Oct 30 11:03:02 VM-0-10-ubuntu systemd[1]: redis-server.service: Service hold-off time over, scheduling restart. Oct 30 11:03:02 VM-0-10-ubuntu systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 4. Oct 30 11:03:02 VM-0-10-ubuntu systemd[1]: Stopped Advanced key-value store. Oct 30 11:03:02 VM-0-10-ubuntu systemd[1]: Starting Advanced key-value store... Oct 30 11:03:02 VM-0-10-ubuntu systemd[1]: redis-server.service: Can't open PID file /var/run/redis/redis-server.pid (yet?) after start: No such file or directory
修复方法
找到redis的配置文件,将127.0.0.1 ::0注释掉,因为本机不支持IPV6,而且这样不支持远程连接。sudo vim /etc/redis/redis.conf
项目实战
- 项目依赖
<!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--spring boot 2.x redis 底层使用 Lettuce 依赖这个包--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
- 配置文件
##### redis相关配置 ##### # redis-server的主机 spring.redis.host=yourhost # redis的端口 spring.redis.port=6379 # redis的密码 spring.redis.password=yzhroot # redis的数据库索引 默认是0 spring.redis.database=0 # redis连接池的最大连接数 默认为8 spring.redis.lettuce.pool.max-active=8 # redis连接池的最大等待时间 默认-1 无限制 spring.redis.lettuce.pool.max-wait=-1
- 代码编写
这里只对String类型的key进行增删改查操作。
@Component public class RedisUtils { @Autowired private RedisTemplate<String,String> redisTemplate; /** * 插入缓存 */ public void insertRedisKeys(String key,String value){ redisTemplate.opsForValue().set(key,value); } /** * 更新缓存 */ public void updateRedisKeys(String key,String value){ redisTemplate.opsForValue().getAndSet(key,value); } /** * 获取缓存 */ public String getRedisKeys(String key){ return redisTemplate.opsForValue().get(key); } /** * 删除缓存 */ public void deleteRedisKeys(String key){ redisTemplate.delete(key); } }
测试
@SpringBootTest class RedisApplicationTests { @Autowired private RedisUtils redisUtils; //测试插入缓存 @Test public void testInsertKeys(){ redisUtils.insertRedisKeys("testkey01","redisTest"); } //测试获取缓存 @Test public void testGetKeks(){ System.out.println(redisUtils.getRedisKeys("testkey01")); } //测试更新缓存 @Test public void testUpdateKeks(){ redisUtils.updateRedisKeys("testkey01","testUpdate"); } //测试删除缓存 @Test public void testDelKeks(){ redisUtils.deleteRedisKeys("testkey01"); } }