redis二进制安装

目录

一、Redis简介... 1

二、数据模型... 2

三、数据结构... 2

四、Redis安装... 2

1.从本地上传安装包 rz 命令... 3

2.解压安装包... 3

3.进入解压的目录 中... 3

4.进入解压目录执行 make && make install 4

5.redis的默认路径... 4

6.启动成功 服务端... 5

7.检测后台进程是否存在... 5

8. 检测6379端口是否在监听... 6

9. 修改配置文件redis.conf 6

10.连接客户端... 8

11 注意启动redis需带配置文件redis.conf启动... 8

12. 命令客户端连接服务器:... 9

五 外部访问redis. 10

六.redis注意事项... 11

七、参数详解:... 13

八 Redis服务查看、开启、关闭... 17

九、redis.conf 的配置信息... 18

一、Redis简介

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等客户端,使用很方便。 [1] 

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)

目前,Vmware在资助着redis项目的开发和维护。

二、数据模型

Redis的外围由一个键、值映射的字典构成。与其他非关系型数据库主要不同在于:Redis中值的类型 [1]  不仅限于字符串,还支持如下抽象数据类型:

值的类型决定了值本身支持的操作。Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。

三、数据结构

redis提供五种数据类型:

string,hash,list,set及zset(sorted set)

四、Redis安装

官网地址:Redis  redis-4.0.2.tar.gz

1.从本地上传安装包 rz 命令

2.解压安装包

tar -zxvf redis-4.0.2.tar.gz

3.进入解压的目录 中

cd 

4.进入解压目录执行

make PREFIX= /data/telecom/redis-salve-10002 install 编译指定目录安装

make && make install 未指定默认安装路径

 
 
 

5.redis的默认路径

如果自己安装中没有改路径的话 redis默认路径如下:
 

6.启动成功 服务端

执行 /usr/local/bin/
或切换到/usr/local/bin目录下 执行 ./redis-server &
一般启动用执行(下面命令代表启动服务端指定redis.conf配置文件)
/usr/local/bin/redis-server /data/telecom/redis/redis-4.0.2/redis.conf
 

7.检测后台进程是否存在

Ps -ef |grep redis

8. 检测6379端口是否在监听

netstat -lntp | grep 6379

 

9. 修改配置文件redis.conf

 

9.1 注意修改点

① 在bind 127.0.0.1前加“#”将其注释掉
② 默认为保护模式,把 protected-mode yes 改为 protected-mode no
③ 默认为不守护进程模式,把daemonize no 改为daemonize yes
④ 将 requirepass foobared前的“#”去掉,密码改为你想要设置的密码(我为了练习用,设置为123456
设置redis密码
 
https://blog.csdn.net/lc1010078424/article/details/78295482
最后修改完后用 :wq! 保存退出
 
 

10.连接客户端

 

10.1 使用`redis-cli`客户端检测连接是否正常

执行 /usr/local/bin/redis-cli
或切换到/usr/local/bin目录下 执行 ./redis-cli
 
即成功

11 注意启动redis需带配置文件redis.conf启动

 
Redis服务先启动服务器端,在启动客户端,一般启动用执行(下面命令代表启动服务端指定redis.conf配置文件)

11.1指定redis.conf文件启动

/usr/local/bin/redis-server /data/telecom/redis/redis-4.0.2/redis.conf
 
修改redis.conf配置文件后:
/usr/local/bin/redis-server /data/telecom/redis/redis-4.0.2/redis.conf &   重启加载生效
 
 

12. 命令客户端连接服务器:

/usr/local/bin/redis-cli -h  127.0.0.1 -p 6379  -a 123456
 
注意:如果客户端连接不上  说明默认为保护模式没改,把 protected-mode yes 改为 protected-mode no
 
 
 
 
 
开启服务:
/usr/local/bin/redis-server start
重启服务:
/usr/local/bin/redis-server restart
停止服务:
/usr/local/bin/redis-server stop
 
或配置service的话用:
/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart
 

五 外部访问redis

如果外部不能访问,需要查看防火墙以及服务器的端口安全设置。

防火墙的操作

查看所有打开的端口: firewall-cmd --zone=public --list-ports

添加

firewall-cmd --zone=public --add-port=6379/tcp --permanent    --permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=6379/tcp

删除

firewall-cmd --zone= public --remove-port=6379/tcp –permanent

 
 

六.redis注意事项

  除了在配置文件redis.conf中配置验证密码以外,也可以在已经启动的redis服务器通过命令行设置密码,但这种方式是临时的,当服务器重启了密码必须重设。命令行设置密码方式如下:

config set requirepass yourPassword

有时候我们不知道当前redis服务器是否有设置验证密码,或者忘记了密码是什么,我们可以通过命令行输入命令查看密码,命令如下:

config get requirepass

如果redis服务端没有配置密码,会得到nil,而如果配置了密码,但是redis客户端连接redis服务端时,没有用密码登录验证,会提示:operation not permitted,这时候可以用命令:auth yourpassword 进行验证密码,再执行 config set requirepass,就会显示yourpassword

 
如果是配置脚本启动,说明如下

  Part III. 使用Redis启动脚本设置开机自启动
启动脚本

推荐在生产环境中使用启动脚本方式启动redis服务。启动脚本 redis_init_script 位于位于Redis /utils/ 目录下。

#大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
#redis服务器监听的端口
REDISPORT=6379
#
服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
#
客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis
PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#
配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"

配置环境

1. 根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录。需使用root用户。

mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf

2. 将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。

cp redis_init_script /etc/init.d/redisd

3.  设置为开机自启动

此处直接配置开启自启动 chkconfig redisd on 将报错误: service redisd does not support chkconfig
参照 此篇文章 ,在启动脚本开头添加如下两行注释以修改其运行级别:

#!/bin/sh
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
#

再设置即可成功。

#设置为开机自启动服务器
chkconfig redisd on
#
打开服务
service redisd start
#
关闭服务
service redisd stop

 
 
 

七、参数详解: 

Redis.conf文件内容详细说明:

  1. # 默认redis不是以后台进程的方式启动,如果需要在后台运行,需要将这个值设置成yes
  2. # 以后台方式启动的时候,redis会写入默认的进程文件/var/run/redis.pid
  3. daemonize yes
  4. # redis启动的进程路径
  5. pidfile/var/run/redis.pid
  6. # 启动进程端口号,这里最好不要使用默认的6379,容易被攻击
  7. port 7179
  8. tcp-backlog 511
  9. # 配置redis监听到的ip地址,可以是一个也可以多个
  10. bind 127.0.0.110.254.3.42
  11. # redis的sock路径
  12. unixsocket/tmp/redis.sock
  13. unixsocketperm 755
  14. # 超时时间
  15. timeout 0
  16. #指定TCP连接是否为长连接,"侦探"信号有server端维护。默认为0.表示禁用
  17. tcp-keepalive 0
  18. # 日志级别,log 等级分为4 级,debug,verbose,notice, 和warning。生产环境下一般开启notice
  19. loglevel notice
  20. # 日志文件地址
  21. logfile"/usr/local/redis/logs/redis.log"
  22. # 设置数据库的个数,可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库。默认16个库
  23. databases 16
  24. #RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是Redis默认采用的持久化方式,在配置文件中已经预置了3个条件:
  25. save 900 1    # 900秒内有至少1个键被更改则进行快照
  26. save 300 10   # 300秒内有至少10个键被更改则进行快照
  27. save 60 10000  # 60秒内有至少10000个键被更改则进行快照
  28. # 持久化数据存储目录
  29. dir/usr/local/redis/data
  30. #当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求。默认设置"yes"表示终止,一旦snapshot数据保存故障,那么此server为只读服务。如果为"no",那么此次snapshot将失败,但下一次snapshot不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点"
  31. stop-writes-on-bgsave-errorno
  32. #在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复
  33. rdbcompression yes
  34. #checksum文件检测,读取写入的时候rdb文件checksum,会损失一些性能
  35. rdbchecksum yes
  36. #镜像备份文件的文件名,默认为dump.rdb
  37. dbfilename dump.rdb
  38. #当主master服务器挂机或主从复制在进行时,是否依然可以允许客户访问可能过期的数据。在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期;在"no"情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error"
  39. slave-serve-stale-datayes
  40. # 如果是slave库,只允许只读,不允许修改
  41. slave-read-only yes
  42. #slave与master的连接,是否禁用TCPnodelay选项。"yes"表示禁用,那么socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制)。可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为no,在高并发或者主从有大量操作的情况下,设置为yes
  43. repl-disable-tcp-nodelayno
  44. #适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master。如果权重值为0,表示此slave为"观察者",不参与master选举
  45. slave-priority 100
  46. #限制同时连接的客户数量。当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到error 信息。默认为10000,要考虑系统文件描述符限制,不宜过大,浪费文件描述符,具体多少根据具体情况而定
  47. maxclients 10000
  48. #redis-cache所能使用的最大内存(bytes),默认为0,表示"无限制",最终由OS物理内存大小决定(如果物理内存不足,有可能会使用swap)。此值尽量不要超过机器的物理内存尺寸,从性能和实施的角度考虑,可以为物理内存3/4。此配置需要和"maxmemory-policy"配合使用,当redis中内存数据达到maxmemory时,触发"清除策略"。在"内存不足"时,任何write操作(比如set,lpush等)都会触发"清除策略"的执行。在实际环境中,建议redis的所有物理机器的硬件配置保持一致(内存一致),同时确保master/slave中"maxmemory""policy"配置一致。
  49. maxmemory 0
  50. #内存过期策略,内存不足"时,数据清除策略,默认为"volatile-lru"。
  51. #volatile-lru  ->对"过期集合"中的数据采取LRU(近期最少使用)算法.如果对key使用"expire"指令指定了过期时间,那么此key将会被添加到"过期集合"中。将已经过期/LRU的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将OOM.
  52. #allkeys-lru ->对所有的数据,采用LRU算法
  53. #volatile-random ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止. 如果如果"过期集合"中全部移除全部移除仍不能满足,将OOM
  54. #allkeys-random ->对所有的数据,采取"随机选取"算法,并移除选中的K-V,直到"内存足够"为止
  55. #volatile-ttl ->对"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据.
  56. #noeviction ->不做任何干扰操作,直接返回OOM异常
  57. #另外,如果数据的过期不会对"应用系统"带来异常,且系统中write操作比较密集,建议采取"allkeys-lru"
  58. maxmemory-policyvolatile-lru
  59. # 默认值5,上面LRU和最小TTL策略并非严谨的策略,而是大约估算的方式,因此可以选择取样值以便检查
  60. maxmemory-samples 5
  61. #默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。所以redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。如果不经常进行数据迁移操作,推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof 进行重写一次。
  62. #另外,对master机器,主要负责写,建议使用AOF,对于slave,主要负责读,挑选出1-2台开启AOF,其余的建议关闭
  63. appendonly yes
  64. #aof文件名字,默认为appendonly.aof
  65. appendfilename"appendonly.aof"
  66. # 设置对appendonly.aof 文件进行同步的频率。always表示每次有写操作都进行同步,everysec 表示对写操作进行累积,每秒同步一次。no不主动fsync,由OS自己来完成。这个需要根据实际业务场景进行配置
  67. appendfsync everysec
  68. # 在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。默认为no,表示"不暂缓",新的aof记录仍然会被立即同步
  69. no-appendfsync-on-rewriteno
  70. #当Aof log增长超过指定比例时,重写logfile,设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。
  71. auto-aof-rewrite-percentage100
  72. #触发aof rewrite的最小文件尺寸
  73. auto-aof-rewrite-min-size64mb
  74. #lua脚本执行的最大时间,单位毫秒
  75. lua-time-limit 5000
  76. #慢日志记录,单位微妙,10000就是10毫秒值,如果操作时间超过此值,将会把command信息"记录"起来.(内存,非文件)。其中"操作时间"不包括网络IO开支,只包括请求达到server后进行"内存实施"的时间."0"表示记录全部操作
  77. slowlog-log-slower-than10000
  78. #"慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除。可以通过"SLOWLOG<subcommand> args"查看慢记录的信息(SLOWLOG get 10,SLOWLOG reset)
  79. slowlog-max-len 128
  80. notify-keyspace-events""
  81. #hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。
  82. #这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128
  83. hash-max-ziplist-entries512
  84. #ziplist中允许条目value值最大字节数,默认为64,建议为1024
  85. hash-max-ziplist-value64
  86. #同上
  87. list-max-ziplist-entries512
  88. list-max-ziplist-value64
  89. #intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable
  90. set-max-intset-entries512
  91. #zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。
  92. zset-max-ziplist-entries128
  93. #zset中允许条目value值最大字节数,默认为64,建议为1024
  94. zset-max-ziplist-value64
  95. #是否开启顶层数据结构的rehash功能,如果内存允许,请开启。rehash能够很大程度上提高K-V存取的效率
  96. activerehashing yes
  97. #客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除。
  98. #buffer控制类型包括:normal -> 普通连接;slave->与slave之间的连接;pubsub ->pub/sub类型连接,此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.指令格式:client-output-buffer-limit <class> <hard><soft><seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后,buffer数据小于了soft,连接将会被保留.其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.
  99. client-output-buffer-limitnormal 0 0 0
  100. client-output-buffer-limitslave 256mb 64mb 60
  101. client-output-buffer-limitpubsub 32mb 8mb 60
  102. #Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。
  103. hz 10
  104. #当一个child在重写AOF文件的时候,如果aof-rewrite-incremental-fsync值为yes生效,那么这个文件会以每次32M数据的来被同步,这大量新增提交到磁盘是有用的,并且能避免高峰延迟。
  105. aof-rewrite-incremental-fsyncyes

八 Redis服务查看、开启、关闭


a.通过ps -aux|grep redis命令查看Redis进程

b.开启Redis服务操作通过/etc/init.d/redis_6379 start命令,也可通过(service redis_6379 start)
c.关闭Redis服务操作通过/etc/init.d/redis_6379 stop命令,也可通过(service redis_6379 stop)

九、redis.conf 的配置信息

1、daemonize 如果需要在后台运行,把该项改为yes
2、pidfile 配置多个pid的地址 默认在/var/run/redis.pid
3、bind 绑定ip,设置后只接受来自该ip的请求
4、port 监听端口,默认是6379
5、loglevel 分为4个等级:debug verbose notice warning
6、logfile 用于配置log文件地址
7、databases 设置数据库个数,默认使用的数据库为0
8、save 设置redis进行数据库镜像的频率。
9、rdbcompression 在进行镜像备份时,是否进行压缩
10、dbfilename 镜像备份文件的文件名
11、Dir 数据库镜像备份的文件放置路径
12、Slaveof 设置数据库为其他数据库的从数据库
13、Masterauth 主数据库连接需要的密码验证
14、Requriepass 设置 登陆时需要使用密码
15、Maxclients 限制同时使用的客户数量
16、Maxmemory 设置redis能够使用的最大内存
17、Appendonly 开启append only模式
18、Appendfsync 设置对appendonly.aof文件同步的频率(对数据进行备份的第二种方式)
19、vm-enabled 是否开启虚拟内存支持 (vm开头的参数都是配置虚拟内存的)
20、vm-swap-file 设置虚拟内存的交换文件路径
21、vm-max-memory 设置redis使用的最大物理内存大小
22、vm-page-size 设置虚拟内存的页大小
23、vm-pages 设置交换文件的总的page数量
24、vm-max-threads 设置VM IO同时使用的线程数量
25、Glueoutputbuf 把小的输出缓存存放在一起
26、hash-max-zipmap-entries 设置hash的临界值
27、Activerehashing 重新hash

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值