Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
在6.0版本前,redis一直是使用单线程方式处理用户请求,单线程的好处:纯内存、非阻塞、避免静态消耗。
注意:避免在redis中使用keys * 命令,这是导致redis变慢的原因之一,当然,也可在redis中禁用此命令。
相比于memcached,redis的持久化、高可用、存储容量等功能都比memcached好,但是redis的单机QPS和并发量比不上memcached。
比如后端数据库是mysql:先更新DB,然后直接删除redis的对应项。
用户先从redis读取数据,读到了直接返回给用户。读不到就去后端mysql找数据,mysql中不论结果如何都会返回给用户并且写入redis。
yum
rhel系列: yum -y install redis
systemctl enable --now redis
Ubuntu系统: apt install redis
systemctl enable --now redis
编译安装三大步,但是redis编译安装很简单,只要make install就可以
redis包下载地址
sh#这里使用的环境是rocky8
#第一步、安装相关包
yum -y install gcc make jemalloc-devel
#第二步、下载源码包并解压
wget http://download.redis.io/releases/redis-6.2.4.tar.gz
tar xf redis-6.2.4.tar.gz
#第三步、进入解压目录,查看帮助、readme、install等文件,redis的INSTALL文件内容就是See readme,那就只能看readme了
cd redis.6.2.4
#查看帮助,文档里写的可以指定安装目录PREFIX选项,
cat README.md | grep install
installed):
In order to install Redis binaries into /usr/local/bin, just use:
% make install
You can use `make PREFIX=/some/other/directory install` if you wish to use a
Make install will just install binaries in your system, but will not configure
needed if you just want to play a bit with Redis, but if you are installing it the proper way for a production system, we have a script that does this
for Ubuntu and Debian systems:
#第四步、安装,这里的-j 2表示使用使用计算机的两个CPU编译,加快速度
make -j 2 USE_SYSTEMD=yes PREFIX=/apps/redis install
#第五步、配置环境变量,准备相关目录和配置文件
echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
. /etc/profile.d/redis.sh
mkdir /apps/redis/{etc,log,data,run} #创建配置文件、日志、数据等目录
cp redis.conf /apps/redis/etc/
#第六步、启动
redis-server /apps/redis/etc/redis.conf #必须指定配置文件路径
#客户端连接使用redis-cli即可
shbind 0.0.0.0 #指定监听地址,支持用空格隔开的多个监听IP
protected-mode yes #redis3.2之后加入的新特性,在没有设置bind IP和密码的时候,redis只允许访问127.0.0.1:6379,可以远程连接,但当访问将提示警告信息并拒绝远程访问
port 6379 #监听端口,默认6379/tcp
tcp-backlog 511 #三次握手的时候server端收到client ack确认号之后的队列值,即全连接队列长度
timeout 0 #客户端和Redis服务端的连接超时时间,默认是0,表示永不超时
tcp-keepalive 300 #tcp 会话保持时间300s
daemonize no #默认no,即直接运行redis-server程序时,不作为守护进程运行,而是以前台方式运行,
如果想在后台运行需改成yes,当redis作为守护进程运行的时候,它会写一个 pid 到/var/run/redis.pid文件
supervised no #和OS相关参数,可设置通过upstart和systemd管理Redis守护进程,centos7后都使用systemd
pidfile /var/run/redis_6379.pid #pid文件路径,可以修改为/apps/redis/run/redis_6379.pid
loglevel notice #日志级别
logfile "/path/redis.log" #日志路径,示例:logfile "/apps/redis/log/redis_6379.log"
databases 16 #设置数据库数量,默认:0-15,共16个库
always-show-logo yes #在启动redis 时是否显示或在日志中记录记录redis的logo
save 900 1 #在900秒内有1个key内容发生更改,就执行快照机制
save 300 10 #在300秒内有10个key内容发生更改,就执行快照机制
save 60 10000 #60秒内如果有10000个key以上的变化,就自动快照备份
stop-writes-on-bgsave-error yes #默认为yes时,可能会因空间满等原因快照无法保存出错时,会禁止redis写入操作,生产建议为no
#此项只针对配置文件中的自动save有效
rdbcompression yes #持久化到RDB文件时,是否压缩,"yes"为压缩,"no"则反之
rdbchecksum yes #是否对备份文件开启RC64校验,默认是开启
dbfilename dump.rdb #快照文件名
dir ./ #快照文件保存路径,示例:dir "/apps/redis/data"
本文作者:笑一个吧~
本文链接:
版权声明:本文为博主「笑一个吧~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。