Redis——认识Redis

2023-11-15

简单介绍

Redis诞生于2009年,全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。

特征

  • 键值(Key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具有原子性
  • 低延迟,速度快(基于内存,IO多路复用,良好的编码)
  • 支持数据的持久化
  • 支持主从集群和分片集群
  • 支持多语言客户端

安装Redis

对于Redis的安装,我们选择使用Linux作为环境进行安装,毕竟这种服务一经开发就是用作服务端,而服务端一般采用的操作系统就是Linux,所以我们选择直接安装在Linux上,省去了因为Windows的兼容问题到导致的出错。并且Redis的官方程序并没有支持Win版的格式,之前使用的Win版的Redis都是微软编译出来的。

我们使用的环境是CentOS7,所以在开始之前我们需要提前装好一个Linux的虚拟机,并保证虚拟机和宿主机之间可以互相ping通。

Redis的官网:雷迪斯 (redis.io)

然后,我们在官网找到下载界面,然后下载当前版本的最新版本:

我下载的时候,最新版本是7.2.0,然后下载好之后,他就是一个tar包,我们把这个tar包上传到Linux的虚拟机上:

先不着急解压,安装Redis的第一步是安装依赖,因为Redis是基于C语言编写的,所以在安装之前要先安装C语言的依赖:

yum install -y gcc tcl

解压Redis的tar包

tar -zxvf redis-7.2.0.tar.gz -C ../software

解压完成之后就是下面这样的

这个地方的软件安装路径可能不一样,这个就因人而异。

解压完成之后,我们需要进行一次编译,我们进入这个解压之后的目录:

make && make install

编译安装的过程会比较长,耐心等待即可。

默认的安装路径在`/usr/local/bin`目录下,我们可以来到这个目录看一下里面生成的文件:

这些文件中,比较重要的就是两个,一个是客户端一个是服务端。

redis-cli:是redis提供的命令行客户端

redis-server:是redis的服务端启动脚本

redis-sentinel:是redis的哨兵启动脚本

启动

前台启动

在刚才的编译安装的过程中,这些文件已经加入了环境变量中,也就是说我们在任何的位置都可以使用这个命令,最简单的启动命令就是直接运行这些脚本即可:

redis-server

当你看到这个redis的LOGO的时候,就表示这个Redis已经开始运行了。

这种方式叫做前台启动,这种启动方式会占用你的当前活动窗口,如果你要再启动一个客户端那你只能再次创建一个SSH连接才能再次开启一个活动窗口的方式去启动它。

指定配置文件启动

除了前台启动,还有一种方式叫做指定配置文件启动。

如果要让Redis以后台方式启动,则必须修改Redis的配置文件,就在我们之前解压的Redis安装包下,名字叫做redis.conf:

修改这个文件之前,首先对配置文件进行一个备份,防止因为错误操作而找不到原来的配置文件:

cp redis.conf redis.conf.bak

然后我们就可以去修改这个文件里面的内容了:

这个里面的内容非常的多,具体的修改的内容如下:

首先是bind的值:

# bind表示监听的地址,也就是允许访问的地址,默认的值就是127.0.0.1也就是只有本机才能访问,但是当我们在宿主机上 # 使用的时候就会造成很多的不便,这时候改成0.0.0.0就表示在任意的主机都可以访问这个Redis bind 0.0.0.0

然后是daemonize的值:

# 守护进程,默认值为no,设置为yes即可后台运行 # daemonize no daemonize yes

还有密码:

# 设置密码是为了保证安全性 requirepass 123456

以及其他的一些常见的配置:

# 监听的端口,端口号一般使用默认,但是如果端口号被其他的服务占用了就只能使用其他的端口号 port 6379 # 工作目录,默认是当前目录,也就是运行时候产生的日志,命令,持久化等都会保存在这个目录,默认是启动服务的目录 dir . # 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0-15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名,这里只写了文件名并没有写文件的路径,那么这个文件的路径默认就是和上面的dir路径是保持一致的。 logfile "redis.log"

然后就是带着配置文件启动,就是将配置文件的路径和文件名写在启动命令之后即可:

redis-server redis.conf

这次启动之后是不会有任何的结果出现在控制台上的,那么查看Redis有没有启动就要查看Linux的进程:

ps -ef | grep redis

可以看到已经存在一个Redis的进程,就说明Redis已经启动成功了:

然后如果你要停止Redis,那么就使用kill -9的杀死进程的命令即可。

开机自启

通过将Redis服务加入到系统服务中的方式实现开机自启。

首先要新建一个系统服务文件:

vim /etc/systemd/system/redis.service

文件的内容如下:

[Unit] Description=redis-server 
After=nerwork.target [Service] 
Type=forking 
ExecStart=/usr/local/bin/redis-server /home/morningstar/software/redis-7.2.0/redis.conf PrivateTmp=true 
[Install] 
WantedBy=multi-user.target

然后重新加载系统服务

systemctl daemon-reload

现在,我们就可以使用系统命令的方式查看Redis的状态,以及控制Redis的启停:

systemctl start redis systemctl status redis systemctl stop redis

注意,因为这个地方的启动和原来的进程启动有冲突,所以如果你没有关闭之前启动的Redis进程,则这里会报错,也就是这个绿色的点会变成红色,显示启动失败,但其实就是因为之前的Redis已经被启动了。

设置开机自启

systemctl enable redis

这样就可以设置开机自启了。

Redis客户端

命令行客户端

Redis安装完成之后就自带了命令行客户端:redis-cli,使用方式如下:

redis-cli [options] [commonds]

其中常见的options有:

  • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
  • -p 6379:指定要连接的redis节点的端口,默认是6379
  • -a 123456:指定redis的访问密码

其中commonds就是Redis的操作命令,例如:

  • ping:与Redis服务做心跳测试,服务端正常会返回pong

不指定commond时,会进入redis-cli的交互控制台:

在命令行中使用-a参数输入密码的方式会不安全,从而导致会出现一个警告,那么安全的做法是不使用密码登陆之后,在交互界面中校验密码:

使用AUTH命令校验密码,校验通过之后会出现一个【OK】,然后我们测试与服务器的连接则显示正常响应,如果在不使用密码进入交互命令行之后,不校验密码就进行操作,则会提示没有权限。

图形化客户端

对于Redis的图形化客户端,一般有使用Gethub上的项目,比如rdm,或者直接使用IDEA的客户端:

根据个人喜好选择即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis——认识Redis 的相关文章

  • 有没有办法在 Redis 和关系数据库中使用带有 @RedisHash 的实体?

    我正在使用Spring引导 为了将我的实体保存在关系数据库上 我配置了一个数据源和我的域类 例如 Entity Table schema schema name name tb name public class table name ex
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • 如何清理redis中不活跃的玩家?

    我正在制作一个使用 redis 来存储游戏状态的游戏 它可以很好地跟踪位置和玩家 但我没有一个好的方法来清理不活跃的玩家 每当玩家移动时 这是一个半慢速移动游戏 想想每秒 1 5 帧 我就会用新位置更新哈希并删除旧位置键 跟踪活跃玩家的最佳
  • 保护节点 Redis

    我正在尝试保护 Node Redis IPC 服务器以使用私钥 公钥 我已经关注了本教程 http bencane com 2014 02 18 sending redis traffic through an ssl tunnel wit
  • Stackexchange.redis 缺乏“WAIT”支持

    我在客户端应用程序正在使用的负载均衡器后面有 3 个 Web API 服务器 我正在使用这个库来访问具有一个主服务器和几个从服务器的 Redis 集群 目前不支持 WAIT 操作 我需要此功能来存储新创建的用户会话并等待它复制到所有从属服务
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • 如果另一个键中的计数器低于零,则从集合中原子删除一个项目?

    雷迪斯2 0 3 在我的 Redis DB 中 我有一组项目 每个项目都有一个与其关联的计数器 MULTI SADD items set foo INCRBY items foo 10000 EXEC 新项目会以随机间隔添加到集合中 当用户
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 如何批量删除Redis中数十万个带有特殊字符的key

    我们有一个包含数十万个 Redis 键的列表 其中包含各种特殊字符 我们希望批量删除它们 对于这个问题上的类似问题 有一些很好的答案 如何使用 Redis 自动删除与模式匹配的键 https stackoverflow com questi
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • 有没有办法用Lettuce自动发现Redis集群中新的集群节点IP

    我有一个Redis集群 3主3从 运行在一个库伯内斯簇 该集群通过Kubernetes 服务 Kube 服务 我将我的应用程序服务器连接到 Redis 集群 使用Kube 服务作为 URI 通过 Redis 的 Lettuce java 客
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr

随机推荐

  • ubuntu 上装win xp

    如果ubuntu不想用 想换成win xp系统 但ubuntu并非卸就直接装xp了 开机后却无法正常进入xp系统 解决方法 1 先到网上下载MbrFix exe http www linuxidc com upload 2007 11 07
  • 你为什么没有男朋友

    一月 放寒假 买票回家 小A托老乡学长代买 请饭答谢 一来二去 学长遂成男友 一月 放寒假 你自己半夜去车站排队 然后 就没有然后了 二月 同学聚会 小B与当年暧昧的男同学的再续前缘 老同学遂成男友 二月 你在家帮你妈做卫生 然后 就没有然
  • Stream流的常用方法

    目录 一 遍历 1 属性遍历 2 对象遍历 3 遍历设值 二 过滤 1 简单过滤 2 多条件过滤 三 去重 四 统计 五 截取 六 跳过 七 排序 1 普通排序 2 指定排序 八 最值 1 集合确定不为空 2 集合可能为空 九 统计 十 L
  • 织梦DEDECMS EXCEL数据批量导入文章插件 支持自定义模型和字段 2021/09/13更新

    插件介绍 本插件为织梦EXCEL批量导入数据插件 支持tag导入 目前只有UTF版本 GBK版本自行转码 默认只支持普通文章模型 不包括自定义字段 需要另外模型或者添加新字段的可以联系客服收费修改 支持自定义字段和自定义模型 使用前 请先备
  • RabbitMQ交换机(扇出模式、直接模式)学习笔记

    视频地址 什么是交换机 RabbitMQ 消息传递模型的核心思想是 生产者生产的消息从不会直接发送到队列 实际上 通常生产 者甚至都不知道这些消息传递传递到了哪些队列中 情况实际上是这样的 生产者只能将消息发送到交换机 exchange 交
  • centos 安装opencv-python(及其安装错误解决方法)

    pip3 install opencv python 引入模块出错 ImportError libSM so 6 cannot open shared object file No such file or directory Import
  • css 实现背景图片拉伸

    使用css3 属性 background size background size cover 即可实现像桌面壁纸一样拉伸 以下是w3c上面的解释 语法 background size length percentage cover con
  • android反编译-修改别人apk(如何无视R文件,使用新增布局xml drawable等)

    前言 反编译是枯燥无味的 也是危险的 请务必避免包吃包住 17年写的有点乱已经重新排版 1 如果二次打包成APK给其他人使用 本文方案 2 如果只是自己使用或者有耐心的用户听你搞分身或者ROOT的 可以采用XPOSED方案 后续会补上XPO
  • 转:http协议学习系列(响应头---Response Headers)

    HTTP最常见的响应头如下所示 Allow 服务器支持哪些请求方法 如GET POST等 Content Encoding 文档的编码 Encode 方法 只有在解码之后才可以得到Content Type头指定的内容类型 利用gzip压缩文
  • Edge 浏览器『版本回退』和『关闭更新』

    前言 最近 Edge 浏览器又更新了 给整体浏览器页面布局进行大改动 之前苗条的标签页和收藏夹栏瞬间变得臃肿了 我实在无法忍受这种布局 所以我索性直接进行版本回退和设置永久关闭更新 详细步骤请看下文 Edge 浏览器版本回退官方文档 Mic
  • 刷脸支付全面爆发只是时间问题

    支付宝领先的微信支付是依附于电商的绝对优势 另一方面 微信支付凭借其10亿用户的优势 正在与支付宝抗衡 近几年来 移动支付的快速发展带动了支付技术的变革 nfc支付 二维码支付 指纹支付等支付方式活跃在我们的日常生活中 随着人脸识别技术的成
  • 【C++】反向迭代器精讲(以list为例)

    目录 二 全部代码 三 设计思路 1 讨论 2 关于迭代器文档一个小细节 结语 一 前言 如果有小伙伴还未学习普通迭代器 请参考这篇文章中的普通迭代器实现 STL list用法 试做 底层实现 花果山 程序猿的博客 CSDN博客 参考lis
  • 为什么会出现Date类型传到数据库后面的时分秒变为0?

    前言 今天写代码的时候遇到了一个问题 现在来和大家分享一下 创建时间 crea time在数据中是Datetime类型 但是当我在实体类上使用 Temporal 注解来给这个日期类型进行转换时 如果要是用 Temporal Temporal
  • sam文件学习1

    1 FLAG说明 Each bit in the FLAG field is defined as 0x0001 p the read is paired in sequencing 0x0002 P the read is mapped
  • 创建RAM程序,验证程序在DDR上的运行

    前面我们验证了程序运行在SRAM中 也就是程序运行在L2 cache中 但是对于启动操作系统 这并不够 操作系统要必须要足够大的RAM 所以我们必须要程序运行在RAM中 也就是DDR上 环境 CodeWarriorDevelopmentSt
  • jwt的token自动续约_JWT token过期自动续期解决方案

    access token 用于一般的资源请求的token refresh token access token过期后用于刷续期的token 注意设置refresh token的过期时间需比access token的过期时间长 问题场景与解决
  • 【OpenCV图像处理】1.11 形态学操作 - 开操作、闭操作、顶帽、黑帽

    形态学操作 开操作 闭操作 顶帽 黑帽 开操作 open 先腐蚀后膨胀 d s t o p
  • qml使用数组技巧

    在qml中 使用JS数组 修改里面的值 不发出change信号 my array n value 为了得到数组属性通知 你必须使用下面这个技巧 var tmp my array tmp n value 你可以做多个更改 也可以push sp
  • 设计模式:外观模式

    有些人可能炒过股票 但其实大部分人都不太懂 这种没有足够了解证券知识的情况下做股票是很容易亏钱的 刚开始炒股肯定都会想 如果有个懂行的帮帮手就好 其实基金就是个好帮手 支付宝里就有许多的基金 它将投资者分散的资金集中起来 交由专业的经理人进
  • Redis——认识Redis

    简单介绍 Redis诞生于2009年 全称是Remote Dictionary Server 远程词典服务器 是一个基于内存的键值型NoSQL数据库 特征 键值 Key value 型 value支持多种不同数据结构 功能丰富 单线程 每个