Redis的使用

本文详细介绍了如何在Linux系统中关闭防火墙、配置与启动Redis服务,包括修改redis.conf文件以允许远程连接,以及如何使用redis-cli作为客户端进行交互。同时提到了Redis的安全配置如requirepass,以及在实际应用中的用户登录认证场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一使用

1、linux

**一、首先 关闭linux的防火墙**

该方法使用后在**重启系统后防火墙会自动开启**

1.首先使用命令:systemctl status firewalld.service 来查看防火墙的当前状态,如果当前状态为active则当前防火墙为运行状态。

2.第二步使用命令:systemctl stop firewalld.service  来关闭防火墙。

3.第三步再次使用:systemctl status firewalld.service 命令来查看防火墙的状态。 状态为dead则表明防火墙已经关闭

**二、检查配置文件**  

   2.1默认的bind 接口是127.0.0.1,也就是本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接,

这样可以避免将redis服务暴露于危险的网络环境中,防止一些不安全的人随随便便通过远程
连接到redis服务。
如果bind选项为空的话,那会接受所有来自于可用网络接口的连接。等价于把**bind设置成0.0.0.0**

2.2修改redis.conf配置文件实现(非必须),即把protected-mode yes修改成**protected-mode no**   



**三 redis-server & redis.conf**    **一定一定一定指定配置文件后台启动**     即使默认的配置文件叫redis.conf   也不会按照它来
6、启动redis服务:
   1)前台启动:在任何目录下执行 redis-server
   2)**后台启动**:在任何目录下执行 redis-server &
   3)**启动redis服务时,指定配置文件**:redis-server redis.conf &   这种**用的最多**
7、关闭redis服务:
   1)、通过kill命令:
       ps -ef|grep redis查看pid
       kill -9 pid
   2)、**通过redis-cli命令关闭:**
       redis-cli shutdown
8、redis的**客户端:用来连接redis服务,向redis服务端发送命令,并且显示redis服务处理结果。**  
   redis-cli:是redis自带客户端,**使用命令redis-cli就可以启动redis的客户端程序。**

   ./mysql -uroot -p 

   redis-cli:**默认连接127.0.0.1(本机)的6379端口上的redis服务。**
   redis-cli -p 端口号:连接127.0.0.1(本机)的指定端口上的redis服务。
   redis-cli -h ip地址 -p 端口:**连接指定ip主机上的指定端口的redis服务**。
9、退出客户端:在客户端执行命令:exit或者quit

配置文件

13、redis的配置文件:在redis根目录下提供redis.conf配置文件;
                     可以配置一些redis服务端运行时的一些参数;
             如果不使用配置文件,那么redis会按照默认的参数运行;
             如果使用配置文件,在启动redis服务时必须指定所使用的配置文件。 
    1)、redis配置文件中**关于网络的配置**:
        port:指定redis服务所使用的端口,默认使用6379。
    bind: 配置客户端连接redis服务时,所能使用的ip地址, **默认情况下**,**不配置bind**,客户端连接redis服务时,通过服务器上任何一个ip都能连接到redis服务;一旦配置了bind,客户端就只能通过bind指定的ip地址连接redis服务。
         一般情况下,bind都是配置服务器上某一个真实ip。 
          

​      **如果配置了port和bind**,则**客户端连接/关闭redis服务**时,**必须指定端口和ip**:
         redis-cli :默认连接127.0.0.1本机上的6379端口服务
​         redis-cli -h 192.168.11.128 -p 6380
​         redis-cli -h 192.168.11.128 -p 6380 shutdown
​
2)、**常规配置**:
​loglevel:配置**日志级别**,开发阶段配置debug,上线阶段配置notice或者warning.
logfile:指定**日志文件**。redis在运行过程中,会输出一些日志信息;默认情况下,这些日志信息会输出到控制台;我们可以使用logfile配置日志文件,使redis**把日志信息输出到指定文件中**。
​    databases:**配置redis服务默认创建的数据库实例个数**,默认值是16。
3)、**安全配置**:(**不常用 要求高速 所以安全性没那么高**)
​    requirepass:**设置访问redis服务时所使用的密码**;**默认不使用**。
​             此参数必须在protected-mode=yes时才起作用。
​                 一旦设置了密码验证,客户端连接redis服务时,必须使用密码连接:redis-cli -h ip -p port -a pwd

2. windows

Redis-x64-3.2.100.rar 解压缩到一个 非中文 的目录

redis-server.exe:服务端, **启动**后,不要关闭

在D:\java动力节点\SpringBoot\动力节点-王鹤老师SpringBoot\工具\Redis-x64-3.2.100           **目录下执行**Redis-x64-3.2.100>(cmd: redis-server.exe redis.windows.conf

redis-cli.exe:客户端, 访问redis中的数据


实际应用

  1. IPO和Fortune

  1. 瑞吉外卖(还没做)

  1. 学习springsecurity中实际用到了redis

用户登录认证通过时

     // userid作为key  完整的用户信息存入redis
        //key是userid   虽然登陆一次就有一个token 但是存 只会存一个  无序不可重复!
        redisCache.setCacheObject("login:"+id,loginUser);

用户退出时

redisCache.deleteObject("login:"+id);

JwtAuthenticationTokenFilter

        //去redis中获取用户信息   能执行到这里 说明肯定拿到了userid 否则被异常处理了
        LoginUser cacheObject = redisCache.getCacheObject("login:" + userid);

当数据库里的数据修改以后怎么和redis缓存进行同步?

思考:拿springsecurity举例(虽然没有做用户修改密码功能) 当用户修改了密码 redis却无法感知。我想解决办法就像现在的app 修改密码以后强制你重新登录

做缓存的前提是数据不保持实时一致,如果需要实时一致的数据,那就失去了为MySQL做缓存的意义,还不如直接在redis里实现业务。

逻辑上是这样:

注意:以下才是使用redis缓存的实际逻辑: (上面的springsecurity提前把数据查出来放进缓存 是个例每当你查询数据,会先从redis里查询,发现没有这条数据再去Mysql里查询,并把结果写入redis同时设置生存时间。

结合java代码理解

public Object getObjectInclNullById(Integer id) {
    // 从缓存中获取数据
    Object cacheValue = cache.get(id);
    // 缓存为空
    if (cacheValue == null) {
        // 从数据库中获取
        Object storageValue = storage.get(key);
        // 缓存空对象
        cache.set(key, storageValue);
        // 如果存储数据为空,需要设置一个过期时间(300秒)
        if (storageValue == null) {
            // 必须设置过期时间,否则有被攻击的风险
            cache.expire(key, 60 * 5);
        }
        return storageValue;
    }
    return cacheValue;
}
------
著作权归所有
原文链接:https://javaguide.cn/database/redis/redis-questions-02.html

当对Mysql进行修改和新增操作后,redis并不会修改。只有当key过期下次查询时才会更新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值