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

完整的工程代码链接:https://github.com/youzhihua/springboot-training