Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis与其他key-value存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
- Redis基本知识
Redis 的数据类型
字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈希表 (hashs)
Redis 和 memcache 相比的独特之处
redis可以用来做存储 (storge) , 而memcache是来做缓存 (cache) 。这个特点主要是因为其有 “持久化” 功能
存储的数据有 “结构” , 对于memcache来说 , 存储的数据 , 只有一种类型—— “字符串” , 而redis则可以存储字符串 , 链表 , 集合 , 有序集合 , 哈序结构
持久化的两种方式
Redis 将数据存储于内存中 , 或被配置为使用虚拟内存 ; 实现数据持久化的两种方式 :
使用截图的方式 , 将内存中的数据不断写入磁盘 (性能高 , 但可能会引起一定程度的数据丢失)
使用类似 MySql l的方式 , 记录每次更新的日志
Redis 服务端的默认端口是 6379
- 安装 Redis
先去官网下载 Redis 安装包 https://redis.io/download
放到 /usr/local/app_pack 目录下面 , 解压文件 :
tar -zxvf redis-4.0.6.tar.g
进入到解压后的目录 :
cd redis-4.0.6
编译程序 :
make
安装到指定目录 :
make install PREFIX=/usr/local/redis
这时候 Redis 程序已经被安装到 /usr/local/redis/bin 目录
将配置文件移动到安装目录 :
mv redis.conf /usr/local/redis/etc/redis.conf
启动 Redis 服务器 :
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
这里是用 /usr/local/redis/etc/redis.conf 配置文件启动 Redis
关闭 Redis 服务器 :
/usr/local/redis/bin/redis-cli shutdown
或者 # pkill redis-server
客户端连接 :
/usr/local/redis/bin/redis-cli
链接到指定主机时 , 用 /usr/local/redis/bin/redis-cli -h 192.168.22.150 -p 6379
设置一个 Redis 键值对 :
127.0.0.1:6379> set foo bar
OK
根据键获取值 :
127.0.0.1:6379> get foo
“bar”
默认情况 Redis 不是在后台运行 , 如果需要把 Redis 放在后台运行 , 编辑配置文件 :
vim /usr/local/redis/etc/redis.conf
将 daemonize 的值改为 yes
让 Redis 开机启动 :
vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
- 文件及配置概述
/usr/local/redis/bin 目录下的几个文件用途 :
redis-benchmark : Redis 性能测试工具
redis-check-aof : 检查 aof 日志的工具
redis-check-dump : 检查 rdb 日志的工具
redis-cli : 连接用的客户端
redis-server : Redis 服务进程
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 同时使用的线程数量
4. 错误解决办法
客户端连接时 , 提示 DENIED Redis is running in protected mode because protected mode is enabled…
将配置文件里的 protected mode改为了 no , 原本是 yes
客户端连接时 , 提示 Connection refused…
可能是配置文件里面的 bind 字段设置了入口 IP , 将其注释