@nemos
2017-05-06T02:45:39.000000Z
字数 4713
阅读 942
web
SELECT 1 #选择数据库
FLUSHALL #清空数据库
DBSIZE #返回数据库键的个数
KEYS * #获得所有键,支持glob通配符
EXIST key #判断键是否存在,存在返回1否则返回0
redis-cli DEL 'redis-cli KEYS "user:*"' #通配符删除键
DEL key [key ...] #删除键,成功返回1否则返回0
TYPE key #获得键的类型
SET key value #设置键值对
GET key #获得键的值,不存在返回nil
MSET key1 value1 key2 value2 #同时设置多个键值
MGET key1 key2 #同时获得多个键值
INCR key #令键中的值递增1并返回结果
INCREBY key increment #指定递增
DECR key
DECRBY key decrement
INCRBYFLOAT key increment
APPEND key value #向值后追加一个值,相当于字符串连接
STRLEN key #获得字符串长度
redis中的键值对中的值可以为一个散列
散列对应了字段与字段值,字段值只能为字符串类型
HSET key field value #插入时返回1,更新时返回0,键不存在则创建
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HEKYS key #获得字段名
HVALS key #获得字段值
HGETALL key #返回字段与字段值组成的列表
HLEN key #获得字段数量
HDEL key field [field ...] #删除字段
HEXISTS key field
HSETNX key field value #不存在则创建,存在则不执行操作
HINCRBY key field increment
LPUSH key value [value ...] #向列表左边添加元素返回列表长度
RPUSH key value [value ...] #右边
LPOP KEY #左边弹出元素,返回被弹出的元素值
RPOP KEY
LINDEX key index #索引元素
RINDEX key index
LINSERT 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否则0
SCARD 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 #设置指定二进制位的值,若不存在都设置为0
GETBIT key offset #获得指定二进制位的值超出位置默认为0
BITCOUNT key [start] [end] #统计位上为1的个数,参数限定范围,左右闭
BITTOP operation destkey key [key...] #多个键的值做位运算结果存储在destkey里面
# 支持的位运算有 AND, OR, XOR, NOT
MULTI #开始事务
EXEC #结束事务
使用watch
WATCH key
MULTI
SET 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 count
SORT 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 redis
r = redis.StrictRedis() #使用默认设置连接到redis
r = 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 #测试连接是否正常,正常返回PONG
redis-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 |
设置持久化文件存放目录 |