vlambda博客
学习文章列表

一文带你读懂Redis概述详解!建议收藏!



一文带你读懂Redis概述详解!建议收藏!




一文带你读懂Redis概述详解!建议收藏!

简介

一文带你读懂Redis概述详解!建议收藏!


01

NoSQL


NoSQL(Not Only SQL),即不仅是SQL,泛指非关系型数据库。


NoSQL 易扩展,NoSQL 数据库种类繁多(MongoDB、Redis等),共同的特点都是去掉关系数据库的关系型特性。


数据之间无关系,这样就非常容易扩展,无形之间也在架构的层面上带来了可扩展的能力。


大数据量下 NoSQL 数据库具有非常高的读写性能,这得益于它的无关系性,数据库的结构简单。


NoSQL 数据库的典型代表就是 Redis。


02

Redis


Redis(Remote Dictionary Server),即远程字典服务。


一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key - Value 数据库,并提供多种语言的 API。


  • 从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。

  • 从 2013 年 5 月开始,Redis的开发由 Pivotal 赞助。


官网:https://redis.io/




一文带你读懂Redis概述详解!建议收藏!

安装

一文带你读懂Redis概述详解!建议收藏!


01

Windows


1)下载:


网站:https://github.com/tporadowski/redis/releases



一文带你读懂Redis概述详解!建议收藏!


解压后的目录如下:


一文带你读懂Redis概述详解!建议收藏!


文件介绍:


  • redis-server.exe:服务端程序,提供 Redis 服务。

  • redis-cli.exe: 客户端程序,通过它连接 Redis 服务并进行操作。

  • redis-check-dump.exe:RDB 文件修复工具。

  • redis-check-aof.exe:AOF 文件修复工具。

  • redis-benchmark.exe:性能测试工具,用以模拟同时由 N 个客户端发送 M 个 SETs/GETs 查询(类似于 Apache 的 ab 工具)。

  • redis.windows.conf:配置文件,将 Redis 作为普通软件使用的配置,命令行关闭则 Redis 关闭。

  • redis.windows-service.conf:配置文件,将 Redis 作为系统服务的配置。


2)使用


双击 redis-server.exe,会弹出窗口一闪而过,如果不想窗口消失,可以在 cmd 中打开。


一文带你读懂Redis概述详解!建议收藏!


这里启动的是 Redis 的服务端,用于提供服务。


双击 redis-cli.exe。


一文带你读懂Redis概述详解!建议收藏!


这里启动的是 Redis 的客户端,用于连接服务。


测试使用。


一文带你读懂Redis概述详解!建议收藏!


如此即说明 Redis 可以正常使用。


Windows 下安装和使用 Redis 都非常简单,但官方并不推荐。


一文带你读懂Redis概述详解!建议收藏!


官方建议使用 Linux 进行部署。


Redis 可以在其他操作系统中工作,但这种支持是尽力而为的。Windows 版本没有官方支持。


02

Linux



这里以 CentOS 7.6 系统为例。


1)环境准备


由于 Redis 由 ANSI C 编写,安装 Redis 前需要先安装 C 语言环境。


yum install gcc-c++

2)下载


访问Redis 官方:https://redis.io/


一文带你读懂Redis概述详解!建议收藏!


3)解压


tar -zvxf redis-6.2.6.tar.gz


4)移动


一般都会将 redis 目录放置到 /usr/local/redis。


这里将目前在 /home/sail 目录下的 redis-6.2.6 文件夹更改目录,同时更改文件夹名称为 redis。


mv /home/sail/redis-6.2.6 /usr/local/redis

5)编译


跳转到 /usr/local/redis 下:


make

最后输出如下内容即代表编译成功:


一文带你读懂Redis概述详解!建议收藏!


6)安装


make PREFIX=/usr/local/redis install这里多了一个关键字 PREFIX=这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了 redis 必须存放在 /usr/local/redis 目录。假设不添加该关键字 Linux 会将可执行文件存放在 /usr/local/bin 目录。这里指定号目录也方便后续的卸载,后续直接 rm -rf /usr/local/redis 即可删除 redis。

7)启动


我们一般需要后台启动 Redis。


这里有两种方式:命令带&和修改配置文件。


命令带&:

 
   
   
 
./bin/redis-server& ./redis.conf
[root@sail redis]# ./bin/redis-server& ./redis.conf
[1] 11953
-bash: ./redis.conf: Permission denied
[root@sail redis]# 11953:C 15 Mar 2022 16:15:10.803 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11953:C 15 Mar 2022 16:15:10.803 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=11953, just started
11953:C 15 Mar 2022 16:15:10.803 # Warning: no config file specified, using the default config. In order to specify a config file use ./bin/redis-server /path/to/redis.conf
11953:M 15 Mar 2022 16:15:10.803 * monotonic clock: POSIX clock_gettime./bin/redis-server& ./redis.conf
[root@sail redis]# ./bin/redis-server& ./redis.conf
[1] 11953
-bash: ./redis.conf: Permission denied
[root@sail redis]# 11953:C 15 Mar 2022 16:15:10.803 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11953:C 15 Mar 2022 16:15:10.803 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=11953, just started
11953:C 15 Mar 2022 16:15:10.803 # Warning: no config file specified, using the default config. In order to specify a config file use ./bin/redis-server /path/to/redis.conf
11953:M 15 Mar 2022 16:15:10.803 * monotonic clock: POSIX clock_gettime


 _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 6.2.6 (00000000/0) 64 bit.-`` .-```. ```\/ _.,_ ''-._( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 11953 `-._ `-._ `-./ _.-' _.-'|`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | https://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'|| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-'

11953:M 15 Mar 2022 16:15:10.804 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.11953:M 15 Mar 2022 16:15:10.804 # Server initialized11953:M 15 Mar 2022 16:15:10.804 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.11953:M 15 Mar 2022 16:15:10.804 * Ready to accept connections


这种方式需要在启动命令中带 & 才行,不太方便,一般都是通过修改配置文件实现。


修改配置文件:


  • 将 redis.conf 由 daemonize no 改为 daemonize yes 即可。

  • 修改后不带 & 也可以后台启动。


./bin/redis-server ./redis.conf

这里列举下 redis.conf 中比较重要的配置项:

配置项名称 配置项值范围 说明

daemonize

yes、no

yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行

port


指定 Redis 监听端口,默认端口为 6379

bind


protected-mode

yes 、no

保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。

timeout

300

当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能

loglevel

debug、verbose、notice、warning

日志级别,默认为 notice

databases

16

设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到

rdbcompression

yes、no

指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。

dbfilename

dump.rdb

指定本地数据库文件名,默认值为 dump.rdb

dir


指定本地数据库存放目录

requirepass


设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password> 命令提供密码,默认关闭

maxclients

0

设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。

maxmemory

XXX <bytes>

指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。


8)查看


查看进程方式:

ps -ef|grep redis[root@sail redis]# ps -ef|grep redisroot 11953 3410 0 16:15 pts/1 00:00:02 ./bin/redis-server *:6379
 
   
   
 

查看端口方式:


Redis 的默认端口为 6379,一般不会更改,可以通过该端口查询 Redis 允许情况。

 
   
   
 
netstat -lanp | grep 6379[root@sail redis]# netstat -lanp | grep 6379tcp 0 0 0.0.0.0:6379 0.0.0.0:*  LISTEN 11953/./bin/redis-s
 
   
   
 

9)环境变量配置


为方便使用,建议先配置 Redis 的环境变量。


vim /etc/profile


一文带你读懂Redis概述详解!建议收藏!


source /etc/profile
 
   
   
 

10)性能测试


bin 目录下的 redis-benchmark 可以进行性能测试。


  • -c(clients):客户端的并发量(默认 50)。

  • -n(num):客户端请求数量(默认 100000)。

  • -q:仅仅显示 redis-benchmark 的 requests per second 信息。

  • -r(random):向 Redis 插入更多随机的值。

  • -P :每个请求pipeline的数据量(默认为 1)。

  • -k :客户端是否使用 keepalive,1 为使用,0 为不使用,默认值为 1。

  • -t:对指定命令进行基准测试。

  • –csv:将结果按照 csv 格式输出。

 
   
   
 

redis-benchmark -h localhost -p 6379 -c 100 -n 100000


11)使用


redis-cli 是连接本地redis服务的一个命令,通过该命令后可以进入 redis 的脚本控制台。


配置好环境变量后任意目录下输入 redis-cli 即可进入。


[root@sail etc]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello Hello World
(error) ERR syntax error
127.0.0.1:6379> set hello "Hello World"
OK
127.0.0.1:6379> get hello
"Hello World"






 推荐阅读 






 运维界升职加薪必备的云计算技术,你学了吗?


学完高级运维云计算课程之后,你可以:


  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到运维技术硬实力

  • 技术大佬年薪可达30w+


 资源放送 

2022新版Linux运维高级云计算-红帽RHCE实战课程合集,扫描下方二维码即可领取!

 文章来源网络 侵删