*redis安装
wget http://download.redis.io/releases/redis-5.0.3.tar.gz --下载压缩包
tar zxvf redis-5.0.3.tar.gz --解压
cd redis-5.0.3/
make --编译
yum -y install gcc-c++ automake autoconf --安装gcc
如果还报错的话运行:make MALLOC=libc
mkdir -p /usr/local/redis --创建一个redis目录
make PREFIX=/usr/local/redis install --在redis目录安装
cd /usr/local/redis
cd bin/
启动redis: ./redis-server
前台启动redis改为后台启动redis(daemonize改为yes),添加端口号,关闭保护机制(protected-mode),打开密码( requirepass),默认为16个库可以进行添加
cd ~
cd redis-5.0.3/
cp redis.conf /usr/local/redis/bin/ --将redis.conf拷贝一份
cd /usr/local/redis/bin
vim redis.conf --进行编辑
./redis-server redis.conf ---启动
测试是否成功
./redis-cli ---连接客户端
ping
ps -ef|grep redis --停止redis
kill -9 27523 --杀死进程
./redis-server redis.conf --重启redis
*redis配置
cd /usr/local/redis/bin
./redis-cli -h 192.168.77.120 --可以指定自己的IP
./redis-cli -p 6379 -a root --指定redis的端口和密码
select 1 --选择数据库,下标从0开始,默认为0
(1.)string字符串 set <key,value>
set name 婷婷 --添加一条
get name 获取值 --获取一条数据
set mset sex 男 ,address 陕西 --- 创建多条数据
get mset name sex addresss ----获取多条数据
(2.)哈希 hash <key(redis中的value),key,value>
hset name 张三 --添加一条数据
hget name --获取一条数据
hmset sex 男 address 陕西 ---添加多条数据·
hmget name sex address ---获取多条数据
hgetall user ---将redis key下的所有hash数据都打印出来
hdel user name,sex --删除指定数据
(3.)列表 list
--左添加
lpush student zhangsan lisi --可以添加·多条数据 l指left
lrange student 0 2 --查看数据 下标从0开始 l指list
--右添加
rpush student wangwu zhaoliu
lrange student 0 3
llen student --查看当前有多少条数据
lrem student 1 lisi --删除lisi这条数据 ,如果有多个lisi可以根据个数删除(删除时从左往右删除)
(4.)集合 set(无序)
sadd letters aaa bbb ccc ddd eee --查询添加多条数据
smembers letters --查询数据 它是无序的,但是它的内部是有序的
scard letters --查看总条数
srem letters aaa ccc --删除
(5)有序集合 sorted set
zadd score 7 zhangsan 3 lisi 6 wangwu 10 zhaoliu 1 tianqi --添加
zrange score 0 6 --查数据
zcard score --查总个数
zrem score zhangsan lisi --删除
,
*Redis通用命令
--层级关系目录
优点:
(1.)可读性高
(2.)方便使用,方便归类
set cart:user01:item01 apple
get cart:user01:item01
---设置失效时间
set code test ex 10 --设置失效时间
ttl code
-1:永不失效
-2:失效
set code test ---没有设置失效时是永久失效
expire code 10 --给已存在的值设置失效时间
set code test px 10000 nx
nx:key不存在的时候才能设置成功,如果存在就会设置失败
xx:存在的时候设置成功,不存在的时候设置失败
*Redis持久化方案
./redis-cli -p 6379 -a root --指定redis的端口和密码
ps -ef|grep redis --停止redis
kill -9 27523 --杀死进程
./redis-server redis.conf --重启redis
(1.)bgsave
优点:可以存储到磁盘上
缺点:没存储一条数据都需要夹bgsave,比较麻烦
(2.)在配置文件中配置 rdb方案
vime redis.conf
修改里面的save
列如:save 10 1 它的意思是10秒后自动存储一个数据,不论修改或删除
优点:默认是开启的,会根据配置自动获取数据到rdb里面
缺点:可能丢失数据
(3.) appendfilename.aof
会使默认的dum.rdb失效
vime redis.conf
appendonly no改为yes
优点:可以时时将命令记录到aof文件中,重启时会从aof中读取命令
缺点:随着数据越存越多,启动时会出现卡顿现象
如果允许部分数据丢失的话 也可以将rdb和of结合起来21··
*Redis主从复制
(1.)读写分离
mkdir -p /opt/redis/data --创建数据
mkdir -p /opt/redis/log -- 日志
mkdir -p /opt/redis/conf --配置
cd redis-5.0.3/ ---
cp redis.conf /opt/redis/conf --拷贝
cd /opt/redis/conf
mv redis.conf redis-common.conf ---修改名字
vim redis-common.conf --修改配置
#bind 127.0.0.1
protected-mode no
#port 6379
daemonize yes --后台启动
#pidfile /var/run/redis_6379.pid --进程文件
#dbfilename dump.rdb
dir /opt/redis/data
masterauth root
requirepass root --访问密码
touch redis-6379.conf --新建每个进程需要的配置文件
vim redis-6379.conf --修改配置
三个
include /opt/redis/conf/redis-common.conf
##进程编号记录文件
pidfile /var/run/redis-6380.pid
##进程端口号
port 6380
##日志记录文件
logfile "/opt/redis/log/redis-6380.log"
##数据记录文件
dbfilename dump-6380.rdb
##追加文件名称
appendfilename "appendonly-6380.aof"
##下面的文件无需在6379里配置
##备份服务器从属于6379推荐配置配局域网IP
slaveof 192.168.77.
120 6379
运行redis主从
cd /usr/local/redis/bin
./redis-server /opt/redis/conf/redis-6379.conf
ps -ef|grep redis --有进程的话杀死
kill -9 ...
启动三个
./redis-cli -p 6379 -a root
./redis-server redis.conf
info replication --查看主从状态
(2.)哨兵配置,主备切换
cd redis-5.0.3/
cp sentinel.conf /opt/redis/conf/ --拷贝哨兵
cd /opt/redis/conf
mv sentinel.conf sentinel-common.conf ---修改名字
vim sentinel-common.conf --进行配置
#port 26379
daemonize yes --后台启动
#pidfile /var/run/redis-sentinel.pid --进程文件
#logfile "" --日志文件
sentinel monitor mymaster 192.168.77.120 6379 2 哨兵 监控 主从环境 主从复用环境 主服务器
sentinel auth-pass mymaster root --哨兵密码
touch sentinel-26379.conf --创建哨兵文件夹
vim sentinel-26379.conf --修改私有配置文件
#引用公共配置
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26379
#进程编号记录文件
pidfile /var/run/sentinel-26379.pid
#日志记录文件(为了方便查看文件,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26379.log"
启动:
cd /usr/local/redis/bin/
./redis-sentinel /opt/redis/conf/sentinel-26379.conf --启动哨兵
ps -ef|grep redis
ps -ef|grep sentinel --查看哨兵是否启动成功
tail -f /opt/redis/log/sentinel-26379.log --查看日志
kill -9 46873 杀死主节点
(3.)搭建redis集群
总结:
(1.) 单节点版本的redis:
优点:部署比较简单、容易
缺点:读的压力比较大,没有一定的高可用
(2.)主从复用,读写分离,读写分离的环境
优点:将读的压力分散出去,分到从服务器上去,主服务器只负责读和写,从服 务器只负责读,分散了读的压力;
提高了一定的可用性,比如从服务器宕机了,其它的从服务器和中服务都能工作
缺点:如果主服务器宕机,数据可能是一个过期的数据·,最新的数据没办法写入
(3.)搭入哨兵,主备切换
优点:哨兵可以监控主备复用的环境,检测主服务器有没有挂机,如果挂机会重新选举,选举
一个从服务器 变成主服务器,如果主服务器30s没连上的话执行这一步
更加地提高了可用性,有了哨兵之后可以重新选举主服务器,重新进行读写的操作
缺点:写的压力没有分散,容易造成资源浪费
(4.)搭建redis集群 一个集群有13864个槽
优点:
一个集群
优点:基本上解决了之前的问题
缺点:成本高; 排错能力交叉
优点:基本上解决了之前的问题
缺点:成本高; 排错能力较差