Redis入门基础教程

Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key – value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份;也可用作传递的消息队列服务器使用。

1.安装redis2.redis集群

1.安装redis

环境准备:

centos 7.2redis-3.2.12.tar

安装方式编译安装

cd /data

tar xzf redis-3.2.12.tar.gz

cd redis-3.2.12

yum -y install gcc-c++ tcl gcc

make

可能会出现的问题:

若出现如下提示,则将make改为make MALLOC=libc,推测是因为编译库的问题

[root@localhost redis-3.2.12]# makecd src && make allmake[1]: Entering directory /root/redis-2.8.17/src‘ CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"make[1]: *** [adlist.o] Error 1make[1]: Leaving directory
/root/redis-2.8.17/src‘make: *** [all] Error 2

make完后 redis目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务

cd src./redis-server注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

redis.conf?是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

在配置redis.conf中 如果需要在redis后台运行,把该项daemonize改为yes

2.redis集群

简介:redis集群搭建一共是6个节点 3主3从 手动新建6个配置文件一致 统一使用6300 6301 端口 每台机器上2个节点 (我使用的是2台机器搭建集群 也可以三台每台两个节点 或者一台上6节点)

cd /datamkdir clustercd clustermkdir 6300 6301cd 6300touch redis-6300.conf

可根据自己需要对配置文件进行修改 下面是我的配置:

daemonize yesport 6300tcp-backlog 511timeout 60tcp-keepalive 0loglevel noticemaxmemory 10gbdatabases 16dir “/home/data/cluster/6300”

slave-serve-stale-data yes

logfile “/home/data/cluster/6300/redis_6300.log”#slave只读slave-read-only yes#not use defaultrepl-disable-tcp-nodelay yesslave-priority 100#打开aof持久化appendonly yes#每秒一次aof写appendfsync everysec#关闭在aof rewrite的时候对新的写操作进行fsyncno-appendfsync-on-rewrite yesauto-aof-rewrite-min-size 64mblua-time-limit 5000#打开redis集群cluster-enabled yescluster-config-file “/home/data/cluster/6300/nodes-6300.conf”#节点互连超时的阀值(单位毫秒)cluster-node-timeout 15000#一个主节点在拥有多少个好的从节点的时候就要割让一个从节点出来给其他没有从节点或者从节点挂掉的主节点cluster-migration-barrier 1#如果某一些key space没有被集群中任何节点覆盖,最常见的就是一个node挂掉,集群将停止接受写入cluster-require-full-coverage no#部署在同一机器的redis实例,把auto-aof-rewrite搓开,防止瞬间fork所有redis进程做rewrite,占用大量内存auto-aof-rewrite-percentage 80slowlog-log-slower-than 10000slowlog-max-len 128notify-keyspace-events “gxE”hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60hz 10aof-rewrite-incremental-fsync yes#Generated by CONFIG REWRITEmaxclients 30000bind 172.168.55.23

配置文件创建完成后复制到每个节点上 ip 和 端口注意修改

编辑完配置文件后逐一启动各个节点的redis

进入到 redis目录下的src

运行 ./redis-server +节点配置文件的路径

运行之后 在每台机器上查看运行状态 (请提前关闭防火墙和selinux)

或者防火墙开启6300 6300 端口firewall-cmd?–zone=public?–add-port=6300/tcp?–permanent

firewall-cmd?–zone=public?–add-port=6301/tcp?–permanent

查看是否启动成功

ps -ef | grep redis

netstat -tnlp | grep redis #可以看到redis监听端口

lsof -i:6300 查看6300 6301 是否存在

开始创建集群

前面已经准备好了搭建集群的redis节点,接下来我们要把这些节点都串连起来搭建集群。官方提供了一个工具:redis-trib.rb ,它是用ruby写的一个程序,所以我们还得安装ruby.

再用 gem 这个命令来安装 redis接口? ? gem是ruby的一个工具包.

通过yum安装

yum install centos-release-scl-rh 

yum install rh-ruby24

scl enable rh-ruby24 bash //必须执行

ruby -v //查看安装版本

注意:想要开机自动启动ruby 需要在家目录下配置环境变量

vim ~/.bash_profile

PATH=/opt/rh/rh-ruby24/root/usr/bin/:$PATH:$HOME/

export LD_LIBRARY_PATH=/opt/rh/rh-ruby24/root/usr/lib64:${LD_LIBRARY_PATH}

下一步gem install redis

进到redis的src目录下

创建集群

./redis-trib.rb create –replicas 1 172.16.54.23:6300 172.16.54.24:6300 172.16.54.25:6300 172.16.54.23:6301 172.16.54.24:6301 172.16.54.25:6301

中间会有提示 输入yes即可

集群搭建后可以通过

查看cluster状态 redis-trib.rb check 172.16.54.23:6300查看cluster信息 redis-trib.rb info 172.16.54.23:6300

测试集群是否搭建成功

进入到redis界面

输入 set hello worldOk

去任意一台从机

执行./redis-cli -c -p 6300 -h 172.16.54.24输入get hello出现world集群搭建成功

还有一种方法 redis 集群如果出现一台master宕机 会自动推选出一台新的主节点Kill -9 **** 杀掉其中的一台主节点的进程

通过 redis-trib.rb check 172.16.54.23:6300

查看是否有新的master生成

redis cluster命令行

//集群(cluster)??CLUSTER?INFO? 打印集群的信息??CLUSTER?NODES? 列出集群当前已知的所有节点(node),以及这些节点的相关信息。?????//节点(node)??CLUSTER?MEET? ? ?将?ip?和?port? 所指定的节点添加到集群当中,让它成为集群的一份子。??CLUSTER?FORGET? ? 从集群中移除?node_id?指定的节点。??CLUSTER?REPLICATE? ? 将当前节点设置为?node_id?指定的节点的从节点。??CLUSTER?SAVECONFIG? 将节点的配置文件保存到硬盘里面。?????//槽(slot)??CLUSTER?ADDSLOTS? ?[slot?…]? 将一个或多个槽(slot)指派(assign)给当前节点。??CLUSTER?DELSLOTS? ?[slot?…]? 移除一个或多个槽对当前节点的指派。??CLUSTER?FLUSHSLOTS? 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。??CLUSTER?SETSLOT? ?NODE? ? 将槽?slot?指派给?node_id?指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。??CLUSTER?SETSLOT? ?MIGRATING? ? 将本节点的槽?slot?迁移到?node_id?指定的节点中。??CLUSTER?SETSLOT? ?IMPORTING? ? 从?node_id?指定的节点中导入槽?slot?到本节点。??CLUSTER?SETSLOT? ?STABLE?取消对槽?slot?的导入(import)或者迁移(migrate)。?????//键?(key)??CLUSTER?KEYSLOT? ? 计算键?key?应该被放置在哪个槽上。??CLUSTER?COUNTKEYSINSLOT? ? 返回槽?slot?目前包含的键值对数量。??CLUSTER?GETKEYSINSLOT? ? ?返回?count?个?slot?槽中的键。CLUSTER?RESET?[HARD|SOFT] 集群重置

这些命令都是集群独有的,执行命令得通过redis-cli登录

./redis-cli -c -p 6300 -h 172.16.54.23???//登录??

不同的机器环境会出现不同的问题 下面是我出现过的问题 可用做参考

这个问题解决可以有两种方法解决:1.修改配置文件redis.conf的权限参数设置为no,就是不需要权限验证

protected-mode no

2.修改配置文件redis.conf的权限设置安全密码(密码自定义设置)

requirepass “111111”?? #权限密码

我这里是第一解决方法,不需要权限,先kill启动的6个redis进程,在修改配置文件。在继续进行集群搭建

解决方法:相关文件都在src

1.停止所有redis进程,将需要新增的节点下aof、rdb等本地备份文件删除;2.同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件,一般为nodes.conf;3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli –p 端口 对数据库进行清除:flushdb????? #清空当前数据库启动redis进程重新执行集群命令

redis基础讲解到此结束 谢谢 有问题可以私信我 我会第一时间回复

Leave A Comment