一、 Redis基本知识
1.Redis 的数据类型
字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈希表 (hashs)
2.Redis的特性
(1)使用ANSI C编写
(2)遵守BSD协议
(3)支持网络
(4)可基于内存亦可持久化
(5)日志型、Key-Value数据库
通常被称为数据结构服务器,因为其value可以是String,Map,list,set,sorted set
3.特点
支持数据持久化,可以将内存中的数据保存在磁盘,重启时可再次加载使用;
不仅支持简单的KV数据,还提供list、set、zset、hash等数据结构的存储;
支持数据备份,master-slave模式。
4.优势
性能极高。读110000次/s,写81000次/s;
数据类型丰富;
所有操作都是原子性,支持对几个操作全并后的原子性执行;
丰富的特性。还迟滞publish/subscribe,通知,key过期等。
5.与其他KV存储的区别
数据结构复杂,支持原子性操作。基于基本数据结构,无需额外抽象;
可以持久化到磁盘。
6.Redis 和 memcache 的区别
(1)Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;
(2)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;
(3)虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;
(4)过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;
(5)分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;
(6)存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
(7)灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
(8)Redis支持数据的备份,即master-slave模式的数据备份;
(9)应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。
二、安装配置
1.关闭防火墙
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
2.关闭SELinux
临时关闭SELinux
setenforce 0
临时打开SELinux
setenforce 1
查看SELinux状态
getenforce
开机关闭SELinux
编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。
3.下载redis
Redis官网:http://redis.io/download
Redis中文网:http://www.redis.cn/download.html
4.将下载好的压缩包放到/usr/local目录下或者直接下载
# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
# tar xzf redis-4.0.9.tar.gz
# ln -s redis-4.0.9 /home/redis
# cd redis
# make
5.编译完成后,进入Src目录
# cd src
# mkdir /usr/redis
# cp redis-server /usr/redis
# cp redis-benchmark /usr/redis
# cp redis-cli /usr/redis
# cp ../redis.conf /usr/redis
# cd /usr/redis
6.启动服务
# /usr/redis/redis-server /usr/redis/redis.conf
建立软连接
# ln -s /usr/redis/redis-server /usr/bin/redis-server
# ln -s /usr/redis/redis-cli /usr/bin/redis-cli
重新启动
# redis-server /usr/redis/redis.conf
启动成功
7.设置守护进程
将redis.conf中daemonize设置为yes,确保守护进程开启。
sed -i 's#daemonize no#daemonize yes#g' /usr/redis/redis.conf
8.设置开机自启动
vim /etc/rc.local
加入
redis-server /usr/redis/redis.conf
三、 文件及配置概述
1./usr/local/redis/bin 目录下的几个文件用途
redis-benchmark : Redis 性能测试工具
redis-check-aof : 检查 aof 日志的工具
redis-check-dump : 检查 rdb 日志的工具
redis-cli : 连接用的客户端
redis-server : Redis 服务进程
2.Redis 的配置项解析
daemonize : 如需要在后台运行 , 把该项的值改为 yes
pdifile : 把 pid 文件放在 /var/run/redis.pid , 可以配置到其他地址
bind : 指定 Redis 只接收来自该 IP 的请求 , 如果不设置 , 那么将处理所有请求 , 在生产环节中最好设置该项
port : 监听端口 , 默认为 6379
timeout : 设置客户端连接时的超时时间 , 单位为秒
loglevel : 等级分为 4 级 , debug , revbose , notice 和 warning , 生产环境下一般开启 notice
logfile : 配置 log 文件地址 , 默认使用标准输出 , 即打印在命令行终端的端口上
database : 设置数据库的个数 , 默认使用的数据库是 0
save : 设置 redis 进行数据库镜像的频率
rdbcompression : 在进行镜像备份时 , 是否进行压缩
dbfilename : 镜像备份文件的文件名
dir : 数据库镜像备份的文件放置的路径
slaveof : 设置该数据库为其他数据库的从数据库
masterauth : 当主数据库连接需要密码验证时 , 在这里设定
requirepass : 设置客户端连接后进行任何其他指定前需要使用的密码
maxclients : 限制同时连接的客户端数量
maxmemory : 设置redis能够使用的最大内存
appendonly : 开启 appendonly 模式后 , Redis 会把每一次所接收到的写操作都追加到 appendonly.aof 文件中 , 当 Redis 重新启动时 , 会从该文件恢复出之前的状态
appendfsync : 设置 appendonly.aof 文件进行同步的频率
vm_enabled : 是否开启虚拟内存支持
vm_swap_file : 设置虚拟内存的交换文件的路径
vm_max_momery : 设置开启虚拟内存后 , Redis 将使用的最大物理内存的大小 , 默认为 0
vm_page_size : 设置虚拟内存页的大小
vm_pages : 设置交换文件的总的page数量
vm_max_thrrads : 设置 vm IO 同时使用的线程数量
四、错误解决办法
1.客户端连接时 , 提示 DENIED Redis is running in protected mode because protected mode is enabled...
将配置文件里的 protected mode改为了 no , 原本是 yes
2.客户端连接时 , 提示 Connection refused...
可能是配置文件里面的 bind 字段设置了入口 IP , 将其注释