[关闭]
@nemos 2017-05-06T02:45:39.000000Z 字数 4713 阅读 942

redis

web


数据类型

全局

  1. SELECT 1 #选择数据库
  2. FLUSHALL #清空数据库
  3. DBSIZE #返回数据库键的个数

键值对

  1. KEYS * #获得所有键,支持glob通配符
  2. EXIST key #判断键是否存在,存在返回1否则返回0
  3. redis-cli DEL 'redis-cli KEYS "user:*"' #通配符删除键
  4. DEL key [key ...] #删除键,成功返回1否则返回0
  5. TYPE key #获得键的类型
  6. SET key value #设置键值对
  7. GET key #获得键的值,不存在返回nil
  8. MSET key1 value1 key2 value2 #同时设置多个键值
  9. MGET key1 key2 #同时获得多个键值
  10. INCR key #令键中的值递增1并返回结果
  11. INCREBY key increment #指定递增
  12. DECR key
  13. DECRBY key decrement
  14. INCRBYFLOAT key increment
  15. APPEND key value #向值后追加一个值,相当于字符串连接
  16. STRLEN key #获得字符串长度

散列

redis中的键值对中的值可以为一个散列
散列对应了字段与字段值,字段值只能为字符串类型

  1. HSET key field value #插入时返回1,更新时返回0,键不存在则创建
  2. HGET key field
  3. HMSET key field value [field value ...]
  4. HMGET key field [field ...]
  5. HEKYS key #获得字段名
  6. HVALS key #获得字段值
  7. HGETALL key #返回字段与字段值组成的列表
  8. HLEN key #获得字段数量
  9. HDEL key field [field ...] #删除字段
  10. HEXISTS key field
  11. HSETNX key field value #不存在则创建,存在则不执行操作
  12. HINCRBY key field increment

列表

  1. LPUSH key value [value ...] #向列表左边添加元素返回列表长度
  2. RPUSH key value [value ...] #右边
  3. LPOP KEY #左边弹出元素,返回被弹出的元素值
  4. RPOP KEY
  5. LINDEX key index #索引元素
  6. RINDEX key index
  7. LINSERT key BEFORE|AFTER pivot value #将值插入到pivot前后,返回插入后列表元素个数
  8. LLEN key #获得列表中的元素个数
  9. LRANGE key start stop #获得列表片段,包含两端,支持负索引
  10. LRANGE 0 -1 #返回所有元素
  11. LREM key count value #删除前count个值为value的元素,并返回实际删除的个数
  12. LTRIM #删除指定索引以外的所有元素
  13. PROPLPUSH source destination #从source右边弹出元素到des的左边,并返回元素值

集合

  1. SADD key member [member ...] #向集合中添加元素,返回成功加入的元素
  2. SREM key member [member ...] #删除,返回成功删除元素个数
  3. SMEMBERS key #获得所有元素
  4. SRANDMEMBER key [count] #随机获得count个元素,正数不重复,负数可能重复
  5. SPOP key #随机弹出一个元素
  6. SISMEMBER key member #判断是否存在,存在返回1否则0
  7. SCARD key #获得元素个数
  8. SDIFF key [key ...] #差集,返回运算结果
  9. SINTER key [key ...] #交集
  10. SUNION key [key ...] #并集
  11. SDIFFSTORE destination key [key ...] #集合运算并存储结果
  12. SINTERSTORE destination key [key ...]
  13. SUNIONSTORE destination key [key ...]

有序集合

  1. ZADD key score member [score member ...] #设定元素以及其分数
  2. ZSCORE key member #获得分数
  3. ZRANGE key start stop [WITHSCORES] #排名范围内正序返回元素
  4. ZREVRANGE key start stop [WITHSCORES] #倒序,WITHSCORES指定是否返回分数
  5. ZRANGEBYSOCRE key min max [WITHSCORES] [LIMI offset count]
  6. # 返回指定分数范围内的元素,limit指定开始获取的位置和获取的个数
  7. # 可以( 指定开区间,+inf指定正无穷
  8. ZINCRBY key increment member #增加分数,返回增加后的分数
  9. ZCARD key #获得元素个数
  10. ZCOUNT key min max #获得分数范围内元素的个数
  11. ZREM key member [member ...] #删除元素
  12. ZREMRANGEBYRANK key start stop #删除指定排名内的元素
  13. ZREMRANGEBYSOCRE key min max #删除指定分数范围内的元素
  14. ZRANK key member #获得元素的排名
  15. ZREVRANK key member #逆序排名
  16. ZINTERSTORE destination numkeys key [...] [WEIGHTS weight [...]] [AGGREGATE SUM|MIN|MAX]
  17. # 计算有序集合的交集并存储在des中,AGGREGATE指定交的方式

  1. SETBIT key offset value #设置指定二进制位的值,若不存在都设置为0
  2. GETBIT key offset #获得指定二进制位的值超出位置默认为0
  3. BITCOUNT key [start] [end] #统计位上为1的个数,参数限定范围,左右闭
  4. BITTOP operation destkey key [key...] #多个键的值做位运算结果存储在destkey里面
  5. # 支持的位运算有 AND, OR, XOR, NOT

高级

事务

  1. MULTI #开始事务
  2. EXEC #结束事务

使用watch

  1. WATCH key
  2. MULTI
  3. SET key value #一旦事务中被监控的键被修改事务会立即退出
  4. EXEX #执行完后会取消对所有键的监控
  5. UNWATCH #事务外也可以用UNWATCH取消对键的监控

生存时间

  1. EXPIRE key seconds #设定键的生存时间,1成功0失败
  2. PEXPIRE #使用毫秒
  3. EXPIREAT #使用unix时间作为截止生存时间
  4. TTL key #返回键的剩余生存时间
  5. PERSIST #取消键的生存时间
  6. # 为键重新赋值也会清除其生存时间

缓存

修改配置文件中的maxmemory限制最大可使用内存
maxmemory-policy指定内存超过限制删除键的策略
LRULeast Recently Used最近最少使用算法

规则 说明
volatile-lru 使用lru删除键,只对设置了生存时间的键
allkeys-lru 使用lru删除键
volatile-random 随机删除有生存时间的键
allkeys-random 随机删除一个键
volatile-ttl 删除生存时间最近的一个键
noeviction 不删除键只返回错误

排序

  1. SORT key [ALPHA] [DESC] LIMIT offset count
  2. SORT key BY otherkey* #将key的值替换到*并将替换后的otherkey作为排序依据
  3. SORT key BY otherkey*->field #散列表
  4. SORT tag:ruby:posts BY post:*->time DESC #按时间获得同一个tag下文章的ID列表
  5. SORT key BY otherkey*->field1 GET otherkey*->field
  6. #指定返回的值,get参数可以有多个,get #返回元素本身
  7. SORT tag:ruby:posts BY post:*->time DESC GET post:*->title
  8. #由返回文章id改为返回文章的标题
  9. SORT key STORE okey #存储排序结果

消息通知

任务队列

  1. BRPOP key time #从key中取出一个新元素,若没有则会一直等待到timeout,0为无限制
  2. BLPOP

优先队列

  1. BLPOP key1 key2 ... 0 #同时检测多个键
  2. # 键中有元素时则pop,优先级从左到右

P/S模式

可以实现进程间的通信

  1. PUBLISH channel mes #返回接收到的客户端数
  2. SUBSCRIBE channel [...] #进入订阅模式
  3. # 订阅模式返回值类型
  4. # subscribe 表示成功订阅频道,成功订阅频道的名称,当前客户端订阅频道数
  5. # message 表示成功接收到了信息,产生消息的频道,消息的内容
  6. # unsubscribe 成功取消订阅,对应频道名称,当前客户端订阅频道数

规则订阅

  1. PSUBSCRIBE channel*
  2. PUNSUBSCRIBE [pattern] #无参数则退订所有

管道


python

pip install redis

简单用法

  1. import redis
  2. r = redis.StrictRedis() #使用默认设置连接到redis
  3. r = redis.StrictRedis(host='', port=, db=) #
  4. r.set('key'm 'value')
  5. r.get('key')
  6. r.hmset('key', {'field': 'value'})
  7. r.hgetall('key') #返回field与value的字典

管道与事务

  1. # 管道
  2. pipe = r.pipeline()
  3. pipe.set('key', 'value')
  4. pipe.get('key')
  5. result= pipe.execute() #返回执行结果的数组
  6. # 支持链式调用
  7. result = r.pipeline().set('key', 'value').get('key').pipe.execute()
  8. # 事务
  9. pipe = r.pipeline(transaction=False)

持久化

RDB


服务

服务名 说明
redis-server 服务器
redis-cli 命令行客户端
redis-benchmake 性能测试工具
redis-check-aof aof文件修复工具
redis-check-dump rdb文件检查工具

客户端

  1. redis-cli -h 127.0.0.1 -p 6379 #启动客户端
  2. redis-cli PING #测试连接是否正常,正常返回PONG
  3. redis-cli #直接进入交互模式
  4. redis-cli SHUTDOWN

服务端

  1. redis-server #默认使用6379端口
  2. redis-server /path/to/redis.conf #通过配置文件启动

查看配置

  1. redis> CONFIG SET loglevel warning #动态设置配置,只允许部分配置
  2. redis> CONFIG GET #获得配置信息

部署

初始化

  1. # 拷贝源码目下utils文件夹中的初始化文件到启动目录并修改端口号
  2. $ cp path/to/sourcecode/utils/redis_init_script /ect/init.d/redis_6379
  3. # 将脚本中的REDISPORT改为与文件名上相同的端口号
  4. # 使用配置文件启动服务
  5. $ /ect/init.d/redis_6379 start
  6. # 设置随系统启动
  7. $ sudo update-rc.d redis_6379 default

配置

需要建立的文件目录和说明

  1. /ect/redis #存放配置文件
  2. /var/redis/6379 #存放持久化文件
  3. #拷贝源码下的配置文件改名为端口号
  4. $ 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 设置持久化文件存放目录

参考

redis入门指南


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注