Redis
Redis是Remote Dictionary Server的缩写,Redis是一个开源、基于C语言、基于内存亦可持久化的高性能NoSQL的键值对数据库。
每秒可以读写10万个键值。
Redis和MemCache比较
- Redis不仅仅支持简单的k-v类型的数据,同时还提供了list、set、zset、hash等数据结构的存储。
- Redis支持master-slave(主-从)模式应用。
- Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载继续使用。
- Redis单个value的最大限制是1GB,MemCache只能保存1MB的数据。
适用场景
- 取最新N个数据的操作。
- 排行榜应用,取TOP N操作。
- 需要精确设定过期时间的应用。
- 计数器应用。
- Uniq操作,获取某段时间所有数据排重值。
- 实时系统,反垃圾系统。
- Pub/Sub构建实时消息系统。
- 构建队列系统。
- 缓存。
安装环境
- CentOS6.5
- PHPStudy
- PHP5.5
- Apache
Redis安装
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
tar -zxvf redis-3.0.7.tar.gz
cd redis-3.0.7
make
编译成功:
cd src
创建Redis运行目录
mkdir /usr/local/redis
cp redis-cli redis-server /usr/local/redis
cd ..
cp redis.conf /usr/local/redis
cd /usr/local/redis
数据类型
- Key
除了‘\n’和‘空格’不能作为名字的组合内容外,其他内容都可以作为Key的名字部分。长度不做要求。 - String
String是Redis最基本的类型。
Redis的String可以包含任何数据(包括二进制——JPG图片或者序列化的对象)。
单个value值最大上限是1GB。
如果只用String类型,Redis就可以被看作加上持久化特性的MemCache。 - List链表
List其实就是一个双向链表。
通过push、pop操作从链表的头部或尾部添加、删除元素。这使得List既可以用作栈,也可以用做队列。 - Set(集合)
Redis的Set是String类型的无序集合。
Set元素最大可以包含232-1个元素。 - Sort Set(排序集合)
排序集合中的每个元素都是值、权的组合。 - Hash
特别适合用于存储对象,可以占用更少的内存,并且方便存取整个对象。
简单试用
此篇仅用于安装、试用,具体场景、函数,不做详细说明,后续再更新实例。
Redis命令链接
PHPRedis源码链接,有兴趣可以看看
./redis-server redis.conf
./redis-cli
持久化功能
Redis为了内部数据的安全考虑,会把本身的数据以文件的形式保存到磁盘一份,在服务器重启之后会自动把磁盘上的数据恢复到内存(Redis)里。
数据保存到磁盘的过程就称为“持久化”效果
Snap Shotting快照持久化
该持久化默认开启,会一次性把Redis中所有的数据保存一份存储到磁盘里,如果数据非常多(10-20GB)就不适合频繁的使用该持久化操作。
手动执行快照持久化(本机可以省略ip、端口):
./redis-cli -h(IP) -p(端口) bgsave
Append Only File(AOF持久化)
本质:把用户执行的每个“写”指令(添加、修改、删除)都备份到文件中,还原数据的时候就是执行具体的指令。
开启AOF持久化(会清空Redis内的数据)
AOF备份文件优化指令:
./redis-cli bgrewriteaof
常用配置项
- daemonize{yse|no}:是否后台启动。
- pidfile:配置多个pid地址,默认为/var/run/redis.pid。
- port:监听端口,默认为6379。
- bind:绑定ip,设置后只接受来自该ip的请求。
- timeout:设置客户端连接时的超时时间,单位为秒。
- loglevel:日志等级;debug、verbose、notice、warning四个等级。
- logfile:配置log文件地址。
- databases:Redis数据库数量(最多为16个)。
- save x y:x秒内有y个key的数据被修改就执行快照持久化操作。
- rdbcompression:进行镜像备份时,是否进行压缩。
- dbfilename:快照持久化备份文件名称。
- dir:快照持久化备份文件路径。
- appendonly{yes|no}:AOF持久化开启。
- appendfilename:AOF持久化备份文件名称。
- appendsync:AOF持久化备份频率。
- slaveof:自身为从服务器,填写主服务器的IP和端口号。
- masterauth:主数据库连接需要的密码验证。
- requirepass:设置登录时需要使用的密码。
- maxclients:限制并发连接的客户数量。
- maxmemory:设置Redis能够使用的最大内存,单位为byte。
- slave-read-only{yes|no}:从服务器是否可读。
- activerehashing:重新hash。
PHP安装PHPRedis扩展
unzip phpredis-develop.zip
cd phpredis-develop
/phpstudy/server/php/bin/phpize
./configure --with-php-config=/phpstudy/server/php/bin/php-config
make
make install
vim /phpstudy/server/php/etc/php.ini
添加扩展:
重启Apache!