linux的redis的安装和使用
发布日期:2022-03-30 05:03:18 浏览次数:45 分类:博客文章

本文共 13611 字,大约阅读时间需要 45 分钟。

yum安装redis

1.yum安装

#前提得配置好阿里云yum源,epel源#查看是否有redis包yum list redis #安装redis yum install redis -y #安装好,启动redis systemctl start redis

2.检测redis是否工作

redis-cli    #redis 客户端工具#进入交互式环境后,执行ping,返回pong表示安装成功127.0.0.1:6379> pingPONG

源码安装redis,编译安装

编译安装的优势是:

  • 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
  • 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
  • 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
1.下载redis源码wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩 tar -zxf redis-4.0.10.tar.gz 3.切换redis源码目录 cd redis-4.0.10.tar.gz 4.编译源文件 make 5.编译好后,src/目录下有编译好的redis指令 6.make install 安装到指定目录,默认在/usr/local/bin

redis可执行文件

./redis-benchmark //用于进行redis性能测试的工具./redis-check-dump //用于修复出问题的dump.rdb文件./redis-cli //redis的客户端./redis-server //redis的服务端./redis-check-aof //用于修复出问题的AOF文件./redis-sentinel //用于集群管理

启动redis服务端

启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:./redis-server ../redis.conf 默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

使用redis客户端

#执行客户端命令即可进入./redis-cli  #测试是否连接上redis127.0.0.1:6379 > ping返回pong代表连接上了//用set来设置key、value127.0.0.1:6379 > set name "chaoge"OK//get获取name的值127.0.0.1:6379 > get name"chaoge"

通过新的端口和密码登录redis

redis.conf设置

protected-mode yes   #打开保护模式port 6380  #更改默认启动端口requirepass xxxxxx   #设置redis启动密码,xxxx是自定义的密码

启动redis服务端

redis-server /opt/redis-4.0.10/redis.conf &     #指定配置文件启动redis,且后台启动

使用密码登录redis,使用6380端口

方法1,使用这个

[root@oldboy_python ~ 09:48:41]#redis-cli -p 6380127.0.0.1:6380> auth xxxxOK

方法2,此方案不安全,容易暴露密码

[root@oldboy_python ~ 09:49:46]#redis-cli -p 6380 -a xxxxWarning: Using a password with '-a' option on the command line interface may not be safe.127.0.0.1:6380> pingPONG

补充

检查redis是否设置了密码

127.0.0.1:6380> CONFIG get requirepass

1) "requirepass"
2) "xxxxxx"

如果没有,也可以给redis设置密码(命令方式)

CONFIG set requirepass "xxxxxx"

发布/订阅 实验

发布订阅的命令

PUBLISH channel msg    将信息 message 发送到指定的频道 channel SUBSCRIBE channel [channel ...]    订阅频道,可以同时订阅多个频道 UNSUBSCRIBE [channel ...]    取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道PSUBSCRIBE pattern [pattern ...]    订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所    有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有    以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类PUNSUBSCRIBE [pattern [pattern ...]]    退订指定的规则, 如果没有参数则会退订所有规则PUBSUB subcommand [argument [argument ...]]    查看订阅与发布系统状态注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。

发布订阅:

窗口1,启动两个redis-cli窗口,均订阅diantai 频道(channel)

窗口2,启动发布者向频道 diantai发送消息

[root@web02 ~]# redis-cli127.0.0.1:6379> PUBLISH diantai 'jinyewugenglaiwojia'(integer) 2

窗口3,查看订阅者的消息状态

订阅一个或者多个符合模式的频道

窗口1,启动两个redis-cli窗口,均订阅 wang*频道(channel)

127.0.0.1:6379> PSUBSCRIBE wang*Reading messages... (press Ctrl-C to quit)1) "psubscribe"2) "wang*"3) (integer) 1 1) "pmessage"2) "wang*"3) "wangbaoqiang"4) "jintian zhennanshou "

窗口2,启动redis-cli窗口,均订阅wang*频道

127.0.0.1:6379> PSUBSCRIBE wang*Reading messages... (press Ctrl-C to quit)1) "psubscribe"2) "wang*"3) (integer) 11) "pmessage"2) "wang*"3) "wangbaoqiang"4) "jintian zhennanshou "

窗口3,发布者消息

[root@web02 ~]# redis-cli127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou "(integer) 2

redis持久化

Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。

RDB持久化

redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。

也可以再redis.conf中配置,定期执行

RDB持久化产生的RDB文件是一个经过压缩二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态

RDB(持久化)内存数据保存到磁盘在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现rdb通过再redis中使用save命令触发 rdbrdb配置参数:dir /data/6379/dbfilename  dbmp.rdb每过900秒 有1个操作就进行持久化save 900秒  1个修改类的操作save 300秒  10个操作save 60秒  10000个操作save  900 1save 300 10save 60  1000

 redis持久化之RDB实践

1.启动redis服务端,准备配置文件

daemonize yesport 6379logfile /data/6379/redis.logdir /data/6379              #定义持久化文件存储位置dbfilename  dbmp.rdb        #rdb持久化文件bind 10.0.0.10  127.0.0.1    #redis绑定地址requirepass redhat            #redis登录密码save 900 1                    #rdb机制 每900秒 有1个修改记录save 300 10                    #每300秒        10个修改记录save 60  10000                #每60秒内        10000修改记录

2.启动redis服务端

3.登录redis设置一个key

redis-cli -a redhat

4.此时检查目录,/data/6379底下没有dbmp.rdb文件

5.通过save触发持久化,将数据写入RDB文件

127.0.0.1:6379> set age 18OK127.0.0.1:6379> saveOK

redis持久化之AOF

AOF(append-only log file)

记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
优点:最大程序保证数据不丢
缺点:日志记录非常大

redis-client   写入数据  >  redis-server   同步命令   >  AOF文件

配置参数

AOF持久化配置,两条参数appendonly yesappendfsync  always    总是修改类的操作             everysec   每秒做一次持久化             no     依赖于系统自带的缓存大小机制

1.准备aof配置文件 redis.conf

daemonize yesport 6379logfile /data/6379/redis.logdir /data/6379dbfilename  dbmp.rdbrequirepass redhatsave 900 1save 300 10save 60  10000appendonly yesappendfsync everysec

2.启动redis服务

redis-server /etc/redis.conf

3.检查redis数据目录/data/6379/是否产生了aof文件

[root@web02 6379]# lsappendonly.aof  dbmp.rdb  redis.log

4.登录redis-cli,写入数据,实时检查aof文件信息

[root@web02 6379]# tail -f appendonly.aof

5.设置新key,检查aof信息,然后关闭redis,检查数据是否持久化

redis-cli -a redhat shutdownredis-server /etc/redis.confredis-cli -a redhat

redis不重启之rdb数据切换到aof数据

redis.conf服务端配置文件

daemonize yesport 6379logfile /data/6379/redis.logdir /data/6379dbfilename  dbmp.rdbsave 900 1                    #rdb机制 每900秒 有1个修改记录save 300 10                    #每300秒        10个修改记录save 60  10000                #每60秒内        10000修改记录

启动redis服务端

redis-server redis.conf

登录redis-cli插入数据,手动持久化

127.0.0.1:6379> set name chaogeOK127.0.0.1:6379> set age 18OK127.0.0.1:6379> set addr shaheOK127.0.0.1:6379> saveOK

检查RDB文件

[root@pyyuc /data 22:34:16]#ls 6379/dbmp.rdb  redis.log

备份这个rdb文件,保证数据安全

[root@pyyuc /data/6379 22:35:38]#cp dbmp.rdb /opt/

执行命令,开启AOF持久化

127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能OK127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能OK

确保数据库的key数量正确

127.0.0.1:6379> keys *1) "addr"2) "age"3) "name"

确保插入新的key,AOF文件会记录

127.0.0.1:6379> set title golangOK

参考:

总结:

1.在linux安装redis通过源码编译安装redis1.下载源码包    wget http://download.redis.io/releases/redis-4.0.10.tar.gz2.解压缩redis    tar -zxf redis-4.0.10.tar.gz 3.进入redis源码,直接可以编译且安装    cd redis-4.0.10    make && make install     4.可以指定配置文件启动redis    vim /opt/redis-4.0.10/redis.conf     更改  仅修改: daemonize yes     启动   redis-server redis.conf     使用客户端    redis-cli      ping    出现  PONG   成功            vim /opt/redis-4.0.10/redis.conf    1.更改bind参数,让redis可以远程访问        bind 0.0.0.0    2.更改redis的默认端口        port 6380    3.使用redis的密码进行登录        requirepass 登录redis的密码    4.指定配置文件启动        redis-server redis.conf         5.通过新的端口和密码登录redisredis-cli -p 6380登录后auth 密码keys *   查看数据redis还支持交互式的参数,登录数据库redis-cli -p 6380  -a  redis的密码  (这个不太安全)6.通过登录redis,用命令查看redis的密码config set  requirepass  新的密码         #设置新密码config get  requirepass              #获取当前的密码过滤出文件的空白行和注释行grep -v "^#"  redis.conf |   grep  -v "^$"

 

redis发布订阅三个角色,提供的redis命令1.发布者    publish  频道  消息        给频道发消息2.订阅者    SUBSCRIBE  频道         订阅频道     PSUBSCRIBE 频道*          支持模糊匹配的订阅3.频道    channel  频道名 自定义    redis持久化之RDB1.在配置文件中添加参数,开启rdb功能进入redis工作目录[root@localhost redis-4.0.10]# vim redis.confredis.conf 写入    port 6379    daemonize yes    后台运行    logfile /data/6379/redis.log    日志文件    dir /data/6379      制定数据文件    dbfilename   s15.rdb        save 900 1                    #rdb机制 每900秒 有1个修>改记录    save 300 10                    #每300秒        10个修改记录    save 60  10000                #每60秒内        10000修>改记录2.开启redis服务端,测试rdb功能redis-server redis.conf redis持久化之aof1.开启aof功能,在redis.conf中添加参数    port 6379    daemonize yes    logfile /data/6379/redis.log    dir /data/6379    appendonly yes    appendfsync everysec2.启动redis服务端,指定aof功能,测试持久化数据 redis不重启之rdb数据切换到aof数据1.准备rdb的redis服务端    redis-server   s15-redis.conf (注明这是在rdb持久化模式下)2.切换rdb到aofredis-cli  登录redis,然后通过命令,激活aof持久化127.0.0.1:6379>  CONFIG set appendonly yes                #用命令激活aof持久化(临时生效,注意写入到配置文件)OK127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379>  CONFIG SET save ""             #关闭rdb持久化2.5 将aof操作,写入到配置文件,永久生效,下次重启后生效    port 6379    daemonize yes     logfile /data/6379/redis.log    dir /data/6379       #dbfilename   s15.rdb    #save 900 1      #save 300 10     #save 60  10000     appendonly yes    appendfsync everysec3.测试aof数据持久化 ,杀掉redis,重新启动kill redis-server s15-redis.conf 4.写入数据,检查aof文件redis的主从同步1.检查redis数据库信息,主从状态的命令redis-cli  -p 6379  info  检查数据库信息redis-cli  -p 6379  info  replication  检查数据库主从信息  1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制redis-6379.conf     port 6379    daemonize yes    pidfile /data/6379/redis.pid    loglevel notice    logfile "/data/6379/redis.log"    dbfilename dump.rdb    dir /data/6379    redis-6380.conf #通过命令快速生成配置文件    sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf     在redis-6380.conf中写入    slaveof  127.0.0.1  6379   #指明主库的身份ip 和端口redis-6381.conf #通过命令快速生成配置文件    sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf     在redis-6381.conf中写入    slaveof  127.0.0.1  63792.启动三个数据库实例,检测redis主从同步方案3.redis主从赋值,故障手动切换,    1.杀死6379的主库实例    kill 主库        2.手动切换主从身份        1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接            slaveof no one          2.登录redis-6381 ,通过命令,生成新的主任            slaveof 127.0.0.1 6380          3.测试新的主从数据同步        redis哨兵1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步2.redis哨兵的安装配置    1. 准备三个redis数据库实例(三个配置文件,通过端口区分)        [root@localhost redis-4.0.10]# redis-server redis-6379.conf         [root@localhost redis-4.0.10]# redis-server redis-6380.conf         [root@localhost redis-4.0.10]# redis-server redis-6381.conf     2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381)        -rw-r--r--  1 root root    227 Jan  2 18:44 redis-sentinel-26379.conf            touch redis-sentinel-26379.conf        vim redis-sentinel-26379.conf        写入以下        port 26379          dir /var/redis/data/        logfile "26379.log"        sentinel monitor s15master 127.0.0.1 6379 2        sentinel down-after-milliseconds s15master 30000        sentinel parallel-syncs s15master 1        sentinel failover-timeout s15master 180000        daemonize yes    -rw-r--r--  1 root root    227 Jan  2 18:45 redis-sentinel-26380.conf        快速生成配置文件        sed "s/26379/26380/g" redis-sentinel-26379.conf >  redis-sentinel-26380.conf     -rw-r--r--  1 root root    227 Jan  2 18:46 redis-sentinel-26381.conf        sed "s/26379/26381/g" redis-sentinel-26379.conf >  redis-sentinel-26381.conf     3.添加后台运行参数,使得三个哨兵进程,后台运行        [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf         [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf         [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf     4.启动三个哨兵          redis-sentinel redis-sentinel-26379.conf           redis-sentinel redis-sentinel-26380.conf           redis-sentinel redis-sentinel-26381.conf             5.检查哨兵的通信状态    redis-cli -p 26379  info sentinel     查看结果如下之后,表示哨兵正常        [root@localhost redis-4.0.10]# redis-cli -p 26379  info sentinel         # Sentinel        sentinel_masters:1        sentinel_tilt:0        sentinel_running_scripts:0        sentinel_scripts_queue_length:0        sentinel_simulate_failure_flags:0        master0:name=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3    6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态    kill 6379主节点    redis-cli -p 6380 info replication     redis-cli -p 6381 info replication     如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份)        7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份     redis-cluster安装配置1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件    [root@localhost redis-4.0.10]# mkdir s15rediscluster    cd s15rediscluster    touch redis-7000.conf    vim redis-7000.conf    写入以下        port 7000        daemonize yes        dir "/opt/redis/data"        logfile "7000.log"        dbfilename "dump-7000.rdb"        cluster-enabled yes        cluster-config-file nodes-7000.conf    创建六个        [root@localhost s15rediscluster]# sed "s/7000/7001/g" redis-7000.conf >redis-7001.conf        [root@localhost s15rediscluster]# sed "s/7000/7002/g" redis-7000.conf >redis-7002.conf        [root@localhost s15rediscluster]# sed "s/7000/7003/g" redis-7000.conf >redis-7003.conf        [root@localhost s15rediscluster]# sed "s/7000/7004/g" redis-7000.conf >redis-7004.conf        [root@localhost s15rediscluster]# sed "s/7000/7005/g" redis-7000.conf >redis-7005.conf2.启动6个redis数据库实例    [root@localhost s15rediscluster]# redis-server redis-7000.conf     [root@localhost s15rediscluster]# redis-server redis-7001.conf     [root@localhost s15rediscluster]# redis-server redis-7002.conf     [root@localhost s15rediscluster]# redis-server redis-7003.conf     [root@localhost s15rediscluster]# redis-server redis-7004.conf     [root@localhost s15rediscluster]# redis-server redis-7005.conf 3.配置ruby语言环境,脚本一键启动redis-cluster     1.下载ruby语言的源码包,编译安装        wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz    2.解压缩   tar -zxvf ruby-2.3.1.tar.gz        ./configure --prefix=/opt/ruby/       释放makefile        make && make install     编译且安装    3.下载安装ruby操作redis的模块包        cd  /opt         wget http://rubygems.org/downloads/redis-3.3.0.gem                /opt/ruby/bin/gem install -l redis-3.3.0.gem    4.配置ruby的环境变量    echo $PATH        vim /etc/profile    写入最底行    PATH=$PATH:/opt/ruby/bin/    读取文件    source /etc/profile         5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令    一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配    /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005        6.检查节点主从状态    redis-cli -p 7000  info replication         7.向redis集群写入数据,查看数据流向    redis-cli -p 7000    #这里会将key自动的重定向,放到某一个节点的slot槽位中    set  name  s15     set  addr shahe

 

转载地址:https://www.cnblogs.com/chenxi67/p/10217168.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剧本 playbook, roles
下一篇:linux的nginx的安装和使用

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月24日 21时21分36秒