一、 Redis基本知识
1.Redis 的数据类型
字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈希表 (hashs)
2.Redis的特性
()使用ANSI C编写
()遵守BSD协议
()支持网络
()可基于内存亦可持久化
()日志型、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 的区别
()Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;
()Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;
()虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;
()过期策略--memcache在set时就指定,例如set key1 ,即永不过期。Redis可以通过例如expire 设定,例如expire name ;
()分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;
()存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
()灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
()Redis支持数据的备份,即master-slave模式的数据备份;
()应用场景不一样: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
临时打开SELinux
setenforce
查看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..tar.gz
# ln -s redis-4.0. /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 : 监听端口 , 默认为
timeout : 设置客户端连接时的超时时间 , 单位为秒
loglevel : 等级分为 级 , debug , revbose , notice 和 warning , 生产环境下一般开启 notice
logfile : 配置 log 文件地址 , 默认使用标准输出 , 即打印在命令行终端的端口上
database : 设置数据库的个数 , 默认使用的数据库是
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 将使用的最大物理内存的大小 , 默认为
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 , 将其注释