redisAPI整理
全局命令
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整理的更多相关文章
- dotNET跨平台相关文档整理
一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...
- UWP学习目录整理
UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...
- SQL Server 常用内置函数(built-in)持续整理
本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...
- kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- JAVA程序员常用软件整理下载
********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- GJM : C#设计模式汇总整理——导航 【原创】
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
- 安卓GreenDao框架一些进阶用法整理
大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession. ...
随机推荐
- session、cookie、token
各自应用场景考虑session.token.cookie是不是有各自的应用场景,比如传统项目适合用session和cookie单页应用适合用token分布式适合用token等等 token如果非要选择 ...
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A Is it rated?
地址:http://codeforces.com/contest/807/problem/C 题目: C. Success Rate time limit per test 2 seconds mem ...
- mysql服务解压版的安装(5.7)
推荐博客: https://www.cnblogs.com/LxyXY/p/7708016.html
- Python面试题之Python中的lambda map filter reduce zip
当年龟叔想把上面列出来的这些都干掉.在 “All Things Pythonic: The fate of reduce() in Python 3000”这篇文章中,他给出了自己要移除lambda. ...
- RabbitMQ学习之(三)_Centos6下RabbitMQ PHP扩展的安装
安装rabbitmq-c依赖包 yum install libtool autoconf 下载安装rabbitmq-c wget https://github.com/alanxz/rabbitmq- ...
- python windows打包
接触过的工具有pyinstaller,或者py2exe.感觉pyinstaller更简单易用. 真正将依赖的dll打包称一个安装包还需要借助windows打包工具 Inno Setup 或 NSIS ...
- 20145335《java程序设计》第10周学习总结
20145335郝昊 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的 ...
- 构造函数挨个过 —— String()
本篇整理JavaScript中构造函数String的相关知识,主要分为以下三个部分: 构造函数String()的作用与使用方式: String()的属性和方法: 字符串对象实例属性和方法: 一 构造函 ...
- spring 概念理解
一.Spring的IoC(Inversion of Control).这是Spring中得有特点的一部份.IoC又被翻译成“控制反转”,也不知道是谁翻译得这么别扭,感觉很深奥的词.其实,原理很简单,用 ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...