@nemos
        
        2017-05-06T02:45:39.000000Z
        字数 4713
        阅读 974
    web
SELECT 1 #选择数据库FLUSHALL #清空数据库DBSIZE #返回数据库键的个数
KEYS * #获得所有键,支持glob通配符EXIST key #判断键是否存在,存在返回1否则返回0redis-cli DEL 'redis-cli KEYS "user:*"' #通配符删除键DEL key [key ...] #删除键,成功返回1否则返回0TYPE key #获得键的类型SET key value #设置键值对GET key #获得键的值,不存在返回nilMSET key1 value1 key2 value2 #同时设置多个键值MGET key1 key2 #同时获得多个键值INCR key #令键中的值递增1并返回结果INCREBY key increment #指定递增DECR keyDECRBY key decrementINCRBYFLOAT key incrementAPPEND key value #向值后追加一个值,相当于字符串连接STRLEN key #获得字符串长度
redis中的键值对中的值可以为一个散列 
散列对应了字段与字段值,字段值只能为字符串类型
HSET key field value #插入时返回1,更新时返回0,键不存在则创建HGET key fieldHMSET key field value [field value ...]HMGET key field [field ...]HEKYS key #获得字段名HVALS key #获得字段值HGETALL key #返回字段与字段值组成的列表HLEN key #获得字段数量HDEL key field [field ...] #删除字段HEXISTS key fieldHSETNX key field value #不存在则创建,存在则不执行操作HINCRBY key field increment
LPUSH key value [value ...] #向列表左边添加元素返回列表长度RPUSH key value [value ...] #右边LPOP KEY #左边弹出元素,返回被弹出的元素值RPOP KEYLINDEX key index #索引元素RINDEX key indexLINSERT key BEFORE|AFTER pivot value #将值插入到pivot前后,返回插入后列表元素个数LLEN key #获得列表中的元素个数LRANGE key start stop #获得列表片段,包含两端,支持负索引LRANGE 0 -1 #返回所有元素LREM key count value #删除前count个值为value的元素,并返回实际删除的个数LTRIM #删除指定索引以外的所有元素PROPLPUSH source destination #从source右边弹出元素到des的左边,并返回元素值
SADD key member [member ...] #向集合中添加元素,返回成功加入的元素SREM key member [member ...] #删除,返回成功删除元素个数SMEMBERS key #获得所有元素SRANDMEMBER key [count] #随机获得count个元素,正数不重复,负数可能重复SPOP key #随机弹出一个元素SISMEMBER key member #判断是否存在,存在返回1否则0SCARD key #获得元素个数SDIFF key [key ...] #差集,返回运算结果SINTER key [key ...] #交集SUNION key [key ...] #并集SDIFFSTORE destination key [key ...] #集合运算并存储结果SINTERSTORE destination key [key ...]SUNIONSTORE destination key [key ...]
ZADD key score member [score member ...] #设定元素以及其分数ZSCORE key member #获得分数ZRANGE key start stop [WITHSCORES] #排名范围内正序返回元素ZREVRANGE key start stop [WITHSCORES] #倒序,WITHSCORES指定是否返回分数ZRANGEBYSOCRE key min max [WITHSCORES] [LIMI offset count]# 返回指定分数范围内的元素,limit指定开始获取的位置和获取的个数# 可以( 指定开区间,+inf指定正无穷ZINCRBY key increment member #增加分数,返回增加后的分数ZCARD key #获得元素个数ZCOUNT key min max #获得分数范围内元素的个数ZREM key member [member ...] #删除元素ZREMRANGEBYRANK key start stop #删除指定排名内的元素ZREMRANGEBYSOCRE key min max #删除指定分数范围内的元素ZRANK key member #获得元素的排名ZREVRANK key member #逆序排名ZINTERSTORE destination numkeys key [...] [WEIGHTS weight [...]] [AGGREGATE SUM|MIN|MAX]# 计算有序集合的交集并存储在des中,AGGREGATE指定交的方式
SETBIT key offset value #设置指定二进制位的值,若不存在都设置为0GETBIT key offset #获得指定二进制位的值超出位置默认为0BITCOUNT key [start] [end] #统计位上为1的个数,参数限定范围,左右闭BITTOP operation destkey key [key...] #多个键的值做位运算结果存储在destkey里面# 支持的位运算有 AND, OR, XOR, NOT
MULTI #开始事务EXEC #结束事务
使用watch
WATCH keyMULTISET key value #一旦事务中被监控的键被修改事务会立即退出EXEX #执行完后会取消对所有键的监控UNWATCH #事务外也可以用UNWATCH取消对键的监控
EXPIRE key seconds #设定键的生存时间,1成功0失败PEXPIRE #使用毫秒EXPIREAT #使用unix时间作为截止生存时间TTL key #返回键的剩余生存时间PERSIST #取消键的生存时间# 为键重新赋值也会清除其生存时间
修改配置文件中的maxmemory限制最大可使用内存 
maxmemory-policy指定内存超过限制删除键的策略 
LRU为Least Recently Used最近最少使用算法
| 规则 | 说明 | 
|---|---|
volatile-lru | 
 使用lru删除键,只对设置了生存时间的键 | 
allkeys-lru | 
 使用lru删除键 | 
volatile-random | 
 随机删除有生存时间的键 | 
allkeys-random | 
 随机删除一个键 | 
volatile-ttl | 
 删除生存时间最近的一个键 | 
noeviction | 
 不删除键只返回错误 | 
SORT key [ALPHA] [DESC] LIMIT offset countSORT key BY otherkey* #将key的值替换到*并将替换后的otherkey作为排序依据SORT key BY otherkey*->field #散列表SORT tag:ruby:posts BY post:*->time DESC #按时间获得同一个tag下文章的ID列表SORT key BY otherkey*->field1 GET otherkey*->field#指定返回的值,get参数可以有多个,get #返回元素本身SORT tag:ruby:posts BY post:*->time DESC GET post:*->title#由返回文章id改为返回文章的标题SORT key STORE okey #存储排序结果
任务队列
BRPOP key time #从key中取出一个新元素,若没有则会一直等待到timeout,0为无限制BLPOP
优先队列
BLPOP key1 key2 ... 0 #同时检测多个键# 键中有元素时则pop,优先级从左到右
可以实现进程间的通信
PUBLISH channel mes #返回接收到的客户端数SUBSCRIBE channel [...] #进入订阅模式# 订阅模式返回值类型# subscribe 表示成功订阅频道,成功订阅频道的名称,当前客户端订阅频道数# message 表示成功接收到了信息,产生消息的频道,消息的内容# unsubscribe 成功取消订阅,对应频道名称,当前客户端订阅频道数
规则订阅
PSUBSCRIBE channel*PUNSUBSCRIBE [pattern] #无参数则退订所有
pip install redis
import redisr = redis.StrictRedis() #使用默认设置连接到redisr = redis.StrictRedis(host='', port=, db=) #r.set('key'm 'value')r.get('key')r.hmset('key', {'field': 'value'})r.hgetall('key') #返回field与value的字典
# 管道pipe = r.pipeline()pipe.set('key', 'value')pipe.get('key')result= pipe.execute() #返回执行结果的数组# 支持链式调用result = r.pipeline().set('key', 'value').get('key').pipe.execute()# 事务pipe = r.pipeline(transaction=False)
| 服务名 | 说明 | 
|---|---|
redis-server | 
 服务器 | 
redis-cli | 
 命令行客户端 | 
redis-benchmake | 
 性能测试工具 | 
redis-check-aof | 
 aof文件修复工具 | 
redis-check-dump | 
 rdb文件检查工具 | 
redis-cli -h 127.0.0.1 -p 6379 #启动客户端redis-cli PING #测试连接是否正常,正常返回PONGredis-cli #直接进入交互模式redis-cli SHUTDOWN
redis-server #默认使用6379端口redis-server /path/to/redis.conf #通过配置文件启动
查看配置
redis> CONFIG SET loglevel warning #动态设置配置,只允许部分配置redis> CONFIG GET #获得配置信息
# 拷贝源码目下utils文件夹中的初始化文件到启动目录并修改端口号$ cp path/to/sourcecode/utils/redis_init_script /ect/init.d/redis_6379# 将脚本中的REDISPORT改为与文件名上相同的端口号# 使用配置文件启动服务$ /ect/init.d/redis_6379 start# 设置随系统启动$ sudo update-rc.d redis_6379 default
需要建立的文件目录和说明
/ect/redis #存放配置文件/var/redis/6379 #存放持久化文件#拷贝源码下的配置文件改名为端口号$ cp path/to/sourcecode/redis.conf /etc/redis/6379.conf
需要修改的参数
| 参数 | 值 | 说明 | 
|---|---|---|
daemonize | 
 yes | 
 守护模式运行 | 
pidfile | 
 /var/run/redis_6379.pid | 
 设置PID文件位置 | 
port | 
 6379 | 
 设置监听的端口号 | 
dir | 
 /var/redis/6379 | 
 设置持久化文件存放目录 |