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

    xiaoxiao2021-04-18  46

            分几篇文章总结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; @Before public 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()); } @Test public void addTest(){ jedis.set("test", "测试"); } //@Test public 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会一直显示正在连接,但是也不会返回连接不上。

    转载请注明原文地址: https://ju.6miu.com/read-674541.html

    最新回复(0)