springboot使用Redis完整过程详解及常见问题总结

一.背景:项目中需要使用到Redis做缓存 (ide:IDEA  redis服务器:腾讯centos7)

二.步骤:

1.服务器上安装redis

a.执行指令:$ wget http://download.redis.io/releases/redis-4.0.5.tar.gz

b.解压:$ tar -xzvf redis-3.0.4.tar.gz(此处注意一定不要解压到根目录,可以解压到自己创建的文件夹下面如:/urs/software/redis,否则会执行有错接下来)

c.进入解压后的文件夹: $ cd redis-4.0.5

d.编译:$ make(编译之后即可通过/redis-4.0.5/src/redis-server 启动redis)

e.执行指令启动redis:$ redis安装目录/src/redis-server

f.执行命令启动redis客户端:$ redis安装目录/src/redis-cli

redis>set foo bar

OK

redis>get foo

"bar"

至此,你已成功安装redis到服务器,但是还需要一些配置才能更好的使用redis。

 

2.redis配置(主要就是通过修改安装目录redis-4.0.5下的redis.conf文件中的参数实现redis配置)

a.修改daemonize配置项为yes,使得redis进程在后台运行

b.将配置文件中的bind 127.0.0.1配置项注释,使得可以通过外部网络连接redis使用(腾讯云主机后台配置安全组,允许6379端口,linux防火墙也要开启响应端口)

c.修改protected-mode no,设置其保护模式,否则不能正常连接

d.通过启动redis 执行>config set requirepass "123456"   >auth 123456 (只能设置一次,redis重启后还得重新设置密码)(此处设置的密码即为springboot配置redis中的要填的那个密码)

e.$ echo"/usr/local/bin/redis-server /etc/redis.conf" >>/etc/rc.local (为了能让Redis在服务器重启之后自动启动,需要将启动命令写入开机启动项)

(tip:redis.conf参数选项

daemonize:是否以后台daemon方式运行pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名)

dir:数据快照的保存目录(仅目录)

appendonly:是否开启

appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘。三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步

3.springboot配置redis

a.pom.xml引入依赖:

 

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

 

b.approtites.xml配置文件

c.redis工具类

 

@Component
public class RedisComponent {
    //操作字符串的template,StringRedisTemplate是RedisTemplate的一个子集
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    private Logger logger= LoggerFactory.getLogger(RedisComponent.class);
    //RedisTemplate可以进行所有的操作
    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;
    public void set(String key,String value){
        ValueOperations<String,String> ops=this.stringRedisTemplate.opsForValue();
        boolean bExistent=this.stringRedisTemplate.hasKey(key);
        if(bExistent){
            logger.info("this key is bExistent!");
        }else{
            ops.set(key,value);
        }
    }
    public String get(String key){
        return this.stringRedisTemplate.opsForValue().get(key);
    }
    public void del(String key){
        this.stringRedisTemplate.delete(key);
    }

    public void sentinelSet(String key,Object object){
        redisTemplate.opsForValue().set(key,object);
    }
    public String sentinelGet(String key){
        return String.valueOf(redisTemplate.opsForValue().get(key));
    }

}

 

 

 

d.测试类

 

 

阅读更多
文章标签: redis idea springboot
个人分类: springboot nosql
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭