[redis] Redis 常用命令
redis命令文档:
http://doc.redisfans.com/index.html
1. redis查看当前所有的key
KEYS *
模糊匹配key
keys 模糊字符串*
如:keys SOCIA:T_SOCIA_ALBUM_ALBUM:2*
2. 查看当前redis的配置信息
CONFIG GET *
3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了,解决办法:
config set stop-writes-on-bgsave-error no
例如:
set 'name' 'shenhui'
-MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
config set stop-writes-on-bgsave-error no
+OK
set 'name' 'shenhui'
+OK
4. redis 127.0.0.1:6379>
CONFIG SET logfile "/var/log/redis/redis-server.log"(error) ERR Unsupported CONFIG parameter: logfile
logfile 不能通过set动态设置
5.(error) OOM command not allowed when used memory >
设置了maxmemory的选项,redis内存使用达到上限。
可以通过设置LRU算法来删除部分key,释放空间。
默认是按照过期时间的,如果set时候没有加上过期时间就会导致数据写满maxmemory。
如果不设置maxmemory或者设置为0 64位系统不限制内存,32位系统最多使用3GB内存。
volatile-lru -> 根据LRU算法生成的过期时间来删除。
allkeys-lru -> 根据LRU算法删除任何key。
volatile-random -> 根据过期设置来随机删除key。
allkeys->random -> 无差别随机删。
volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
noeviction -> 谁也不删,直接在写操作时返回错误。
6. reids日志位置logfile 日志记录方式,默认值为stdout,如果设置为stdout且以守护进程方式运行,那么日志会被重定向到/dev/null,也就是不记日志。
7.Redis官方文档对VM的使用建议:
当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.
vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
有了VM功能,Redis终于摆脱了受内存容量限制的噩梦了,似乎我们可以称其为Redis数据库了,我们还可以想象又有多少新的用法可以产生.当然,希望这一功能不会对Redis原有的非常牛B的内存存储性能有所影响.
8. redis修改持久化路径和日志路径
vim redis.conf
logfile /data/redis_cache/logs/redis.log #日志路径
dir /data/redis_cache #持久化路径,修改后 记得要把dump.rdb持久化文件拷贝到/data/redis_cache下
先杀掉redis,拷贝dump.rdb,启动
9. 清redis缓存
./redis-cli #进入
dbsize
flushall #执行
exit
10. 删除redis当前数据库中的所有Key
flushdb
11.删除redis所有数据库中的key
flushall
【2016-12-19日更新】
#切换到redis客户端目录
F:
cd redis-2.8.12
#连接redis远程服务器
redis-cli.exe -h 192.168.6.107 -p 16680
redis-cli.exe -h 192.168.6.107 -p 16681
#在16680上查询查不到,提示去16682上查询
192.168.6.107:16680> get rediskey
(error) MOVED 12480 192.168.6.107:16682
#在16682上查询,结果为4
192.168.6.107:16682> get rediskey
"4"
常用命令
【HASH】
#获取Hash类型的值
HGETALL rediskey
【STRING】
#获取String类型的值
GET rediskey
【LIST】
list主要操作函数小结
#获取list长度
LLEN rediskey
#获取list的前N-1个元素
LRANGE rediskey 0 N
【ZSET】
#获取zset类型的正序N-1个member-不带score
ZRANGE rediskey 0 N
#获取zset类型的正序N-1个member和score
ZRANGE rediskey 0 N WITHSCORES
#获取zset类型的倒序N-1个member-不带score
ZREVRANGE rediskey 0 N
#获取zset类型的正序N-1个member和score
ZREVRANGE rediskey 0 N WITHSCORES
#获取zset中某个member的score
ZSCORE rediskey member
#更新zset中某个 member 的score
ZINCRBY rediskey 步长 member
#删除zset中某个 member
ZREM rediskey member