redis:REmote Dictionary Server,以字典结构存储结构,并允许其他应用通过TCP协议读写字典中的内容。支持:字符串、散列、列表、集合、有序集合。
所有数据都存储在内存中,读写速度快;可以持久化,将内存中的数据异步写入到硬盘中。
redis可以做数据库,也可以做缓存、队列。
redis可以为每个键设置生存时间(Time To Live,TTL),生存时间到期后键会自动被删除。
在性能上,reis是单线程模型,memcached支持多线程。redis支持集群。
作为缓存系统,redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。
redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可实现一个高性能的优先级队列。还支持“发布/订阅”的消息模式,可实现聊天室等功能。
环境
Linux下,基本命令如下:
wget http://download.redis.io/redis-stable.tar.gz
tar zxvf redis-stable.tar.gz
cd redis-stable
make
编译完之后,可以在src下面找到若干可执行程序。
更多细节参见博客 http://blog.csdn.net/a0001aa/article/details/60584618
*************************************************************************************
redis可执行文件
redis-server redis服务器
redis-cli redis命令行客户端
redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具
redis-sentinel sentinel服务器
redis启动
redis-server
redis停止
$redis-cli SHUTDOWN
当redis收到SHUTDOWN命令后,会先断开所有全部客户端连接,然后根据配置执行持久化,最后完成退出。
kill -9 redis进程ID 效果等同。
************************************************************
发送命令
$redis-cli -h 127.0.0.1 -p 6379
redis提供了ping命令测试客户端与redis连接是否正常,如果正常返回PONG
********************************************************
配置
$redis-server xxx/xxxx/redis.conf
启动参数传递,会覆盖配置文件对应的参数设置
$redis-server xxx/xxxx/redis.conf --loglevel warning
不重启redis情况下动态修改部分redis配置
redis> CONFIG SET loglevel warning
查看redis当前配置
redis> CONFIG GET loglevel
***********************************************
多数据库
redis默认支持16个数据库(databases=16),每个数据库对外都是以一个从0开始的递增数字命令。
客户端与redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,例如要选择1号数据库
redis>SELECT 1
OK
redis [1]>GET foo
(nil)
********************************************************************
redis命令
redis>KEYS pattern 获得符合规则的键名列表
pattern 规则如下:
? 匹配一个字符
* 匹配任意个(包括0个)字符
[] 匹配括号间的任一字符, "-"表示一个范围
\x 匹配字符x,用于转义
redis>SET bar 1 建立一个名为bar 值为1的键
redis>EXISTS key 判断键key是否存在,存在返回1,否则0
redis>DEL key[key...] 删除一个或多个键,返回值是删除的键的个数
redis-cli DEL `redis-cli KEYS "user:*"` 删除所有以“user: ”开头的键
redis>TYPE key 获得键key的值的数据类型