@delight
2014-05-02T20:34:34.000000Z
字数 1018
阅读 1539
redis
* key-value型数据库,一般用来做高速缓存。
* key只能是字符串,但是value可以是多种数据结构,包括string, list, set, soredset和hash值;
* 一般情况下数据存放在内存中,但是可以持久化到硬盘中;
* 如果配置(/etc/redis/redis.conf
)vm-enabled yes
,那么如果内存超出阈值,就会自动启用硬盘(类似squid的缓存系统);
* string类型可以用GET
, SET
和GETSET
来取/赋值,这些命令都是线程安全的,其中GETSET
用来设置新值并返回旧值。
* list类型,在redis中使用双向链表实现,使用LPUSH
和RPUSH
命令插入元素到链表的头部和尾部;使用LRANGE
取出某个范围的数据;
* set是一个无序的数据集合,同std::unordered_set
;
* sorted sets同std::set
,可以排序;
* 可以通过主从服务器进行同步复制,使多台服务器处于同样的状态,可用于负载均衡(slaveof
);
* 有一个AOF机制用于确保数据持久性,原理是记录每次操作的命令,在进程挂掉后使用这些命令进行重演,保证数据的有效性(appendonly yes
)
* 可以使用redis-benchmark
来测试服务器性能,语法是redis-benchmark -h localhost -p 6379 -c 100 -n 1000
,这意味着有100个并发连接,1000个请求。
* 可以使用redis-cli -h locallhost -p 6379 [info|monitor]
来查看统计|实时监控信息;
* 可以使用redis-stat host localhost port 6379 overview
查看redis实例的总体信息;
* redis对客户端的处理类似普通数据库(非阻塞多路复用),但是某些行为的处理方式比较暴力;
* 在shell中使用redis-cli
来进行数据库管理。常用命令如下:
* ping
,测试服务器是否存活,正常返回PONG
;
* echo
,同shell原本语义;
* select
,从编号0~15的数据库中任选一个进行存取;
* quit
,退出;
* dbsize
,返回当前key的数目;
* info
,服务器信息统计;
* monitor
,实时转储收到的请求;
* config get
,获取服务器配置信息;
* flushdb
,删除当前数据库的所有key;
* flushall
,删除所有数据库中的所有key;