全局命令
1、查看所有键 keys *
2、键总数 dbsize
3、检查键是否存在 exists key
4、删除键 del key del key1 key2 key3
5、键过期 expire key seconds 大于0的整数表示剩余过期时间;-1表示已过期;-2表示键不存在;ttl key返回键剩余时间

数据结构和内部编码
1、查询内部编码 object encoding key

字符串
命令
常用命令
1、设置值
set key value[ex seconds] [px milliseconds] [nx|xx]
setex key seconds value
setnx key value
2、获取值 get key
3、批量设置值 mset key value [key value]
4、批量获取值 mget key [key ...]
5、计数
incr key
decr key
incrby key increment
decrby key decrement
incrbyfloat key increment
不常用命令
1、追加值 append key value
2、字符串长度 strlen key 每个中文字占用3个字节
3、设置并返回原值 getset key value
4、设置指定位置的字符 setrange key offeset value
5、获取部分字符串 getrange key start end

字符串内部编码
1、int 8个字节的长整型
2、embstr 小于等于39个字节的字符串
3、raw 大于39个字节的字符串

应用场景
1、缓存功能
2、计数
3、共享session
4、限速

哈希
命令
1、设置值 hset key field value 例:hset user:1 name tom
2、获取值 hget key field 例:hget user:1 name
3、删除field hdel key field 例:hdel user:1 name
4、计算field个数 hlen key
5、批量设置或获取field-value hmget key field [field ...]
hmset key field value [field value ...]
6、判断field是否存在 hexists key field
7、获取所有field hkeys key
8、获取所有key hvals key
9、获取所有的field-value hgetall key
10、hincrby hincrbyfloat
11、计算value的字符串长度 hstrlen key field

内部编码
1、ziplist field个数比较少且没有大的value时
2、hashtable 当有value大于64字节/field个数超过512

使用场景
1、使用hash类型缓存用户信息
(1)原生字符串类型:每个属性一个键
(2)序列化字符串类型:将用户信息序列化后用一个键保存
Set user:1 serialize(userInfo)
(3)hash类型:每个用户属性使用一对field-value,但是只用一个键保存

列表
命令
添加操作
(1)从右边插入元素
rpush key value [value ...]
Lrange 0 -1从左到右获取列表所有元素
(2)从左边插入元素
lpush key value[value ...]
(3)向某个元素前或后插入元素
linsert key before|after pivot value
例:linsert listkey before b java
查找
(1)获取指定范围内的元素列表
lrange key start end
(2)获取列表指定索引下标的元素
lindex key index
(3)获取列表长度
Llen key
删除
(1)从列表左侧弹出元素
(2)从列表右侧弹出元素
(3)删除指定元素
(4)按照索引范围修剪列表
修改
修改指定索引下标的元素
lset key index newvalue
阻塞操作
blpop key [key ...] timeout
brpop key[key ...] timeout
timeout:阻塞时间(单位:秒)
(1)列表为空:如果timeout=3,那么客户端要等到3秒后返回,如果timeout=0,那么客户端一直阻塞等下去。
(2)列表不为空:客户端立即返回。
注意:在使用brpop时,有两点需要注意
1.如果是多个键,那么brpop会从左到右遍历键,一旦有一个键能弹出元素,客户端立即返回。
2.如果多个客户端对同一个键执行brpop,那么最先执行brpop命令的客户端可以获取到弹出的值。
内部编码:
(1)元素个数较少且没有大元素时,内部编码为ziplist
(2)元素个数超过512个,内部编码变为linkedlist
(3)某个元素超过64字节,内部编码也会变为linkedlist

使用场景
1、消息队列
2、文章列表

列表使用口诀:
lpush+lpop=Stack
Lpush+rpop=Queue
Lpush+ltrim=Capped Collection
Lpush+brpop=Message Queue

集合(无序,不重复)
命令
集合内操作
(1)添加元素
sadd key element [element...]
(2)删除元素
srem key element [element ...]
(3)计算元素个数
scard key
(4)判断元素是否在集合中
sismember key element
(5)随机从集合返回指定个数元素
srandmember key [count]
(6)从集合随机弹出元素
spop key
(7)获取所有元素
smember key
集合间操作
(1)求多个集合的交集
sinter key [key...]
(2)求多个集合的并集
sunion key [key...]
(3)求多个集合的差集
sdiff key [key...]
(4)将交集、并集、差集的结果保存
sinterstore destination key [key...]
sunionstore destination key[key...]
sdiffstore destination key[key...]
例:sinterstore user:1_2:inter user:1:follow user:2:follow
内部编码
(1)当元素个数较少且都为整数时,内部编码为intset
(2)当元素个数超过512个,内部编码变为hashtable
(3)当元素个数不为整数时,内部编码为hashtable
使用场景
1、给用户添加标签
2、给标签添加用户
3、删除用户下的标签
4、删除标签下的用户
5、计算用户共同感兴趣的标签

有序集合(不重复,有排序)
命令
集合内
(1)添加成员
zadd key score member [score member...]
例:zadd user:ranking 251 tom
nx:必须不存在,用于添加
xx:必须存在,用于更新
ch:返回此次操作后,有序集合元素和分数发生变化的个数
incr:对score做增加,相当于后面介绍的zincrby
(2)计算成员个数
zcard key
(3)计算某个成员的分数
zscore key member
(4)计算成员排名
zrank key member(从低到高)
zrevrank key member(从高到低)
(5)删除成员
zrem key member [member...]
(6)增加成员的分数
zincrby key increment member
例:zincrby user:ranking 9 tom
(7)返回指定排名范围的成员
zrange key start end [withscore]
zrevrange key start end [withscore]
(8)返回指定分数范围的成员
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key min max [withscores] [limit offset count]
例:zrangebyscore user:ranking 200 tinf withsore
(9)返回指定分数范围成员个数
zcount key min max
(10)删除指定排名内的升序元素
zremrangebyrank key start end
(11)删除指定分数范围的成员
zremrangebyscore key min max
集合间操作
(1)交集
zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max]
参数说明:
destination:交集计算结果保存到这个键
numkeys:需要做交集计算键的个数
key [key...]:需要做交集计算的键
weights weight [weight...]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1
aggregate sum|min|max:计算成员交集后,分值可以按照sum、min、max做汇总,默认值是sum
例:
zinterstore user:ranking:1_inter_2 2 user:ranking:1 user:ranking:2
zinterstore user:ranking:1_inter_2 2 user:ranking:1 user:ranking:2 weight 1 0.5 aggregate max
(2)并集
zunionstore destination numkeys ke [key...] [weights weight [weight...]] aggregate sum|min|max
内部编码
(1)当元素个数较少且每个元素较小时,内部编码为skiplist
(2)当元素个数超过128个,内部编码变为ziplist
(3)当某个元素大于64字节时,内部编码变为hashtable
使用场景
1、添加用户赞数
2、取消用户赞数
3、展示获取赞数最多的十个用户
4、展示用户信息以及用户分数

键管理
单个键管理
(1)键重命名
rename key newkey
renamenx只有newkey不存在时才被覆盖
(2)随机返回一个键
randomkey
(3)键过期
expire key seconds
expireat key timstamp
ttl/pttl用于查询键剩余过期时间,pttl精度更高,可以达到毫秒级

毫秒级过期方案:
pexpire key milliseconds:键在milliseconds毫秒后过期
pexpire key millseconds-timestamp 键在毫秒级时间戳timestamp后过期
注意:
 如果expire key的键不存在,返回结果为0
 如果过期时间为负值,键会立即被删除,如del一样
 persist命令可以将键的过期时间清除
 对于字符串类型间,执行set命令会去掉过期时间
 不支持二级数据结构
 setex命令作为set+expire的组合,不但是原子执行,同时减少了一次网络通讯的时间
(4)迁移键
 move
move key db
 dump+store
dump key
restore key ttl value
迁移过程如下:
1、在源Redis上执行dump
2、在目标Redis上执行restore
3、migrate(重要,需要深入研究)
遍历键
(1)全量遍历键
keys pattern
(2)渐进式遍历
scan cursor [match pattern] [count number]
数据库管理
(1)切换数据库
select dbIndex
(2)flushdb/flushall

redisAPI整理的更多相关文章

  1. dotNET跨平台相关文档整理

    一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...

  2. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  3. SQL Server 常用内置函数(built-in)持续整理

    本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...

  4. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  5. JAVA程序员常用软件整理下载

    ********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...

  6. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  7. GJM : C#设计模式汇总整理——导航 【原创】

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  9. 安卓GreenDao框架一些进阶用法整理

    大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession. ...

随机推荐

  1. Python 控制台进度条的实现

    进行爬虫等耗时的任务时,有时会想在控制台输出进度条,以显示当前任务进度.这里总结了两种方法. 方法1:使用tqdm模块 示例代码: from time import sleep from tqdm i ...

  2. 端口状态说明 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT

    TCP状态转移要点    TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放.网络服务器程序要同时 ...

  3. peeping tom 在渗透信息收集前的作用。

    原本想写个截屏类的脚本,发现已经有了这个 py脚本   名字叫作: peeping tom 想要了解详细,戳:https://bitbucket.org/LaNMaSteR53/peepingtom/ ...

  4. Jmeter使用流程及简单分析监控(转载)

    转载自:https://www.cnblogs.com/linglingyuese/archive/2013/03/04/linglingyuese-one.html#undefined 一.安装Jm ...

  5. 如何做好Web接口测试

    说说我在测试接口时遇到的一些需要注意的点: 1.接口返回:数据格式是否与预期一致.例如:要求返回json格式的数据,json数据的key命名是否正确,对应的value是否与数据库一致.需要转换的数据是 ...

  6. 让boost.variant支持lambda表达式访问

    前言 之前写个过一篇博客叫<浅谈boost.variant的几种访问方式>,里面讲到了可以通过访问者方式来获取variant的值,但是在重载函数operator()里面只能够获取varia ...

  7. 手写一款符合Promise/A+规范的Promise

    手写一款符合Promise/A+规范的Promise 长篇预警!有点长,可以选择性观看.如果对Promise源码不是很清楚,还是推荐从头看,相信你认真从头看到尾,并且去实际操作了,肯定会有收获的.主要 ...

  8. 如何用纯 CSS 创作一个跳 8 字型舞的 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gKNMMm 可交互视频 此视频是可 ...

  9. 配置linux使用mail发送邮件到163邮箱

    1.进行配置 yum install -y mailx /etc/mail.rc添加对163的授权: ##########config 163 mail############set from=jso ...

  10. 20145307JAVA学习期末总结

    20145307<Java程序设计>课程总结 每周读书笔记链接汇总 20145307 <Java程序设计>第一周学习总结:http://www.cnblogs.com/Jcle ...