spring-boot整合redis作为缓存(1)——redis的设置

来源:互联网 发布:广场舞扰民知乎 编辑:程序博客网 时间:2024/06/04 23:19

        分几篇文章总结spring-boot与redis的整合

        1、redis的安装

        2、redis的设置

        3、spring-boot的缓存

        4、自定义key

        5、spring-boot引入redis


       这是第二篇文章【redis的设置】

       影响redis连接的设置

       redis在安装好了以后,默认在/etc/redis.conf会有配置文件,可以对其进行相应的配置。也可以通过config set 配置项 值的命令形式进行设置。注意:不是所有的配置均可以使用config set的方式,这个时候就需要修改配置文件。另外,配置文件是只读的,需要用chmod u+w进行授权。如果要获得某配置的信息,则可以用命令config get 配置项。通过

config get * 可以获得所有的配置项。

      这里说几个整合需要修改的配置

      1、bind

     解释:该配置项用来绑定客户端ip,处于安全考虑,只有被绑定的客户端才能连上redis

     默认值:127.0.0.1

     修改值:修改为客户端ip或者注释掉,或者设置为0.0.0.0

     注意:如果将其注释掉或者设置为0.0.0.0的话,则可以让所有的客户端连接redis。127.0.0.1的话只有本机可以连上redis

                 该配置不能通过config set的命令动态修改,修改完后重启服务才能生效


     2、protected-mode

     解释:设置是否是保护模式,保护模式为yes的时候,满足以下两点,则无法连接redis

                 a、设置bind为0.0.0.0或者注释掉

                 b、没有设置密码

     默认值:yes

     修改值:如果bind为0.0.0.0或注释掉,或者没有设置密码,设置为no

 

      3、requirepass

      解释:密码

      默认值:空

      修改值:密码

      注意:下次登录需要输入命令auth 密码


      中文乱码

      中文乱码的问题可以在连接服务的时候指定--raw参数解决,redis-cli --raw。


      通过root启动服务

       redis服务请通过root来启动,不然在代码中调用命令的时候很可能返回权限问题。

      测试是否连接

      配置好以上设置后,基本上就可以连接redis了,如何测试是否连上,用一个客户端软件当然是最直接的,比如redis-client。其次,可以用jedis来进行验证。

      比如:

public class JedisTest {private static final Logger logger = LoggerFactory.getLogger(JedisTest.class);private Jedis jedis; @Beforepublic void setup(){logger.debug("create connection by jedis");jedis = new Jedis("redis://root:nmamtf@192.168.58.133:6379");logger.debug("connection is created:"+jedis);logger.debug("connect status:"+jedis.isConnected());}@Testpublic void addTest(){jedis.set("test", "测试");}//@Testpublic void delTest(){jedis.del("test");}}

        需要注意的是,密码如何传入jedis的构造器。在jedis中,普遍是用Jedis类,但是其中的构造器没有传递密码的,底层有一个Client的类,他提供一个密码字段。然而在调用Client类之前,会通过java.net.Url的getUserInfo()方法去解析url获取密码,所以需要【用户名:密码@】的形式,即使你没有用户名,也需要随便填写一个。而且,Jedis(String url)这个构造器也调用了java.net.Url的getScheme()方法去获取了scheme,所以必须要加上redis://。同样地,该构造器也检验了端口号,所以必须填写端口号

        如果没有密码,那么可以使用new Jedis("192.168.58.133",6379)这个构造器,这样url参数就可以省略密码,redis://和端口号了

        最后说一个坑,网上有人说,如果telnet不能连接上,那么redis不通。则个说法是不完全正确的。redis通了以后,你用telnet会一直显示正在连接,但是也不会返回连接不上。

0 0
原创粉丝点击