Redis 是一个高性能的key-value数据库, 支持主从同步, 完全实现了发布/订阅机制, 因此可以用于聊天室等场景. 主要表现于多个浏览器之间的信息同步和实时更新.
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。数据可以从master向任意数量的slave上同步,slave可以是关联其他slave的master。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得slave在任何地方同步树时,可订阅一个频道并接收master完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助.
本文的内容参考博文超强、超详细Redis数据库入门教程.
环境准备
可以从Redis官网下载最新的redis, 然后安装即可.
make install
cd utils && sudo ./install_server.sh
安装过程中, 会有一些端口, 配置文件路径等的设置, 这里选择默认端口6379. 然后执行redis-server即可在默认端口上启动成功.
42068:M 16 May 09:57:11.403 # Server started, Redis version 3.0.1
42068:M 16 May 09:57:11.404 * The server is now ready to accept connections on port 6379
redis-cli
执行redis-cli即可启动命令行工具, 也可自行指定host及port.
redis-cli -h localhost -p 6379
提供了非常丰富的命令对redis的数据进行操作, 数据都是以key-value的形式存储的, 因此get/set操作是使用最常见的.
使用help+命令即可查看命令帮助.
对string的操作
127.0.0.1:6379> exists hello // 查看key是否存在
(integer) 1
127.0.0.1:6379> set hello world // 设置hello-world
OK
127.0.0.1:6379> get hello // 获取hello的值
"world"
127.0.0.1:6379> type hello // 值类型
string
127.0.0.1:6379[2]> substr hello 1 2 // 获取substring
"or"
127.0.0.1:6379[2]> append hello ! // 字符串连接
(integer) 6
127.0.0.1:6379[2]> get hello
"world!"
127.0.0.1:6379> set haha heihei
OK
127.0.0.1:6379> keys h* // 返回满足条件的所有key
1) "hello"
3) "haha"
127.0.0.1:6379> randomkey // 随机返回一个key
"haha"
127.0.0.1:6379> randomkey
"hello"
127.0.0.1:6379> rename hello hehe // 重命名key
OK
127.0.0.1:6379> get haha
"heihei"
127.0.0.1:6379> expire haha 10
(integer) 1 // 设置haha的活动时间(s)
127.0.0.1:6379> ttl haha
(integer) 7 // 获取haha的活动时间</