Redis(四)--- Redis的命令参考
1、简述
数据类型也称数据对象,包含字符串对象(string)、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合对象(zset)。
2、String数据类型命令
string 类型是redis最基础的数据类型,为简单key-value结构,并且value不限制类型,可以是数字,字符,图片等序列化对象,value值最大不可超过512M。
string类型在使用中经常用作分布式session共享,计数器,验证码过期,基础数据的缓存等。
在java编码中使用都是使用封装好的jar包,如spring redis,jedis等等,当封装的方法名称与命令行直接操作大同小异,下面展示命令行使用:
| 命令 | 用法 | 描述 |
| set |
SET key value [EX seconds] [PX milliseconds] [NX|XX] |
|
| get | GET key |
|
| mset | MSET key value [key value ...] |
|
| mget | MGET key [key ...] |
|
| setex | SETEX key seconds value |
|
| setnx | SETNX key value |
|
| psetex | SETEX key milliseconds value |
|
| getset | GETSET key value |
|
| strlen | STRLEN key |
|
| append | APPEND key value |
|
| setrange | SETRANGE key offset value |
|
| getrange | GETRANGE key start end |
|
| incr | INCR key |
|
| incrby | INCR key increment |
|
| incrbyfloat | INCRBYFLOAT key increment |
|
| decr | DECR key |
|
| decrby | DECRBY key decrement |
|
| msetnx | MSETNX key value [key value ...] |
|

注:redis的命令无大小写区分,但key值严格区分大小写
参数:
- EX seconds ---- 设置过期时间为秒,例:EX 60
- PX milliseconds ---- 设置过期时间为毫秒,例:PX 1000
- NX ---- 只有当key值不存在时才设置
- XX ---- 只有当key值存在时才设置
3、list数据类型命令
list数据类型为key-value键值对结构,但是其value值的结构为list,类似java中的队列;左侧为表头,右侧为表尾;结构类似于java的Map<String,List<Object>>
list数据类型可以作为消息队列使用,还可以作为排名等的缓存,也可以作为缓存分页。
| 命令 | 用法 | 描述 |
| lpush |
LPUSH key value [value ...] |
|
| lpushx | LPUSHX key value |
|
| rpush | ROUSH key value [value ...] |
|
| rpushx | RPUSHX key value |
|
| lpop | LPOP key |
|
| rpop | RPOP key |
|
| rpoplpush | RPOPLPUSH source destination |
|
| lrem | LREM key count value |
|
| llen | LLEN key |
|
| lindex | LINDEX key index |
|
| linsert | LINSER key BEFORE|AFTER pivot value |
|
| lset | LSET key index value |
|
| lrange | LRANGE key start end |
|
| ltrim | LTRIM key start end |
|
| blpop | BLPOP key [key ...] timeout |
|
| brpop | BRPOP key [key ...] timeout |
|
| brpoplpush | BRPOPLPUSH source destination timeout |
|

4、hash数据类型
hash表数据类型是key-value结构,但是key为String类型,而value的结构则是field-value结构;类似于java中的Map<Sring,Map<Stirng,Object>> 结构。
hash表数据结构中field-value 的最大存储个数是 232 - 1 个;主要用途是作为key-value对象类型的缓存,在value中存储这个对象,取用时便于还原对象。
| 命令 | 用法 | 描述 |
| hset | HSET key field value |
|
| hsetnx | HSETNX key field value |
|
| hget | HGET key field |
|
| hexists | HEXISTS key field |
|
| hdel | HDEL key field [field ...] |
|
| hlen | HLEN key |
|
| hstrlen | HSTRLEN key field |
|
| hincrby | HINCRBY key field increment |
|
| hincrbyfloat | HINCRBYFLOAT key field increment |
|
| hmset | HMSET key field value [field value ...] |
|
| hmget | HMGET key field [field ...] |
|
| hkeys | HKEYS key |
|
| hvals | HVALS key |
|
| hgetall | HGETALL key |
|

5、set数据类型
set数据类型为无序集合数据类型,且数据不重复;
集合类型经常用户存储一些集合类型的数据,如微博的所有粉丝,标签等数据;结构类似java中的HashSet。
| 命令 | 用法 | 描述 |
| sadd | SADD key value [value ...] |
|
| sismember | SISMEMBER key value |
|
| spop | SPOP key |
|
| srandmember | SRANDMEMBER key [count] |
|
| srem | SREM key value [value ...] |
|
| smove | SMOVE source destination value |
|
| scard | SCARD key |
|
| smembers | SMEMBERS key |
|
| sinter | SINTER key [key ...] |
|
| sinterstore | SINTERSTORE destination key [key ...] |
|
| sunion | SUNION key [key ...] |
|
| sunionstore | SUNIONSTORE destination key [key ...] |
|
| sdiff | SDIFF key [key ...] |
|
| sdiffstore | SDIFFSTORE destination key [key ...] |
|

6、zset数据类型
zset数据类型为有序集合类型,且集合内元素不重复;
有集合通常被用作排行榜等有时间顺序或其他顺序的缓存集和;类似于java中的hashTable
| 命令 | 用法 | 描述 |
| zadd | ZADD key score member [score member ...] |
|
| zscore | ZSCORE key member |
|
| zincrby | ZINCRBY key increment member |
|
| zcard | ZCARD key |
|
| zcount | ZCOUNT key min max |
|
| zrange |
ZRANGE key start stop [WITHSCORE] |
|
| zrevrange | ZREVRANGE key start top [WITHSCORE] |
|
| zrangebyscore | ZRANGEBYSCORE key min max [WITHSOCRE] [LIMIT offset count] |
|
| zrevrangebyscore | ZREVRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count] |
|
| zrank | ZRANK key member |
|
| zrevrank | ZREVRANK key member |
|
| zrem | ZREM key member [member ...] |
|
| zremrangebyrank | ZREMRANGEBYRANK key start stop |
|
| zremrangebyscore | ZREMRANGEBYSCORE key min max |
|
| zrangebylex | ZRANGEBYLEX key min max [LIMIT offset count] |
|
| zlexcount | ZLEXCOUNT key min max |
|
| zremrangebylex | ZREMRANGEBYLEX key min max |
|

7、redis 操作相关命令
redis除了对五大数据类型的操作命令,还有一些系统命令,可以对这个数据库进行操作,如删除key,清空数据库,手动持久化等。
| 命令 | 用法 | 描述 |
| keys | KEYS pattern |
|
| del | DEL key [key ...] |
|
| exists | EXISTS key |
|
| expire | EXPIRE key seconds |
|
| expireat | EXPIREAT key seconds-timestamp |
|
| pexpire | PEXPIRE key milliseconds |
|
| pexpireat | PEXPIREAT key milliseconds-timestamp |
|
| move | MOVE key db |
|
| randomkey | RANDOMKEY |
|
| persist | PERSIST key |
|
| type | TYPE key |
|
| rename | RENAME key newkey |
|
| renamenx | RENAMENX key newkey |
|
| dbsize | DBSIZE |
|
| flushdb | FLUSHDB |
|
| flushall | FLUSHALL |
|
| select | SELECT index |
|
| swapdb | SWAPDB db1 db2 |
|
| ttl | TTL key |
|
| pttl | PTTL key |
|
|
事物相关命令 |
||
| multi | MULTI |
|
| exec | EXEC |
|
| discard | DISCARD |
|
| watch | WATCH key [key ...] |
|
| unwatch | UNWATCH |
|
|
持久化相关命令 |
||
| save | SAVE |
|
| bgsave | BGSAVE |
|
| bgrewriteaof | BGREWRITEAOF |
|
| lastsave | LASTSAVE |
|
|
作为队列使用相关命令(发布订阅) |
||
| publish | PUBLISH channel message |
|
| subscribe | SUBSCRIBE channel [channel ...] |
|
| psubscribe | PSUBSCRIBE pattern [pattern ...] |
|
| unsubscribe | UNSUBSCRIBE channel [channel ...] |
|
| punsubscribe | PUNSUBSCRIBE pattern [pattern ...] |
|
| pubsub |
PUBSUB channels [pattern ...] |
|
注:redis内部命令还有很多,有些维护之类的命令再次不做介绍,如果用到,请参考redis官网。
8、总结
Redis的命令大体上可以分为两种,一种可以称为数据库级命令,可以对任何键值操作,如:DEL、TYPE等,第7节说到的基本都是;另一种是针对五大数据类型操作的,以上几节说道的基本都是。
(1)命令类型检查
命令的执行之前,Reddis会先检查输入的key的类型是否正确,才会决定是否执行给定的命令,也就是命令与值类型是否匹配。

(2)多态命令
如前一章说过四种数据对象每种都有两种编码方式,但在本章使用的命令确是一个;Redis在执行命令之前,会判断对象的编码方式,然后再执行对应的命令,这就是命令的多状态。

参考:
《Redis设计与实现》黄健宏著,网上对Redis的详解等
此博客为笔者使用redis很久之后,参考网络上各类文章总结性书写,原创手打,如有错误欢迎指正。
Redis(四)--- Redis的命令参考的更多相关文章
- redis(四)redis与Mybatis的无缝整合让MyBatis透明的管理缓存
redis的安装 http://liuyieyer.iteye.com/blog/2078093 redis的主从高可用 http://liuyieyer.iteye.com/blog/207809 ...
- Redis 命令参考
Redis 命令参考 http://redis.readthedocs.org/en/latest/index.html
- redis命令参考和redis文档中文翻译版
找到了一份redis的中文翻译文档,觉得适合学习和查阅.这份文档翻译的真的很良心啊,他是<Redis 设计与实现>一书的作者黄健宏翻译的. 地址:http://redisdoc.com/i ...
- Redis命令参考之复制(Replication)
Redis 支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品. ...
- Redis介绍及常用命令
一 Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发 ...
- redis 介绍和常用命令
redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...
- redis的pub/sub命令
Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 cha ...
- 四. Redis事务处理
Redis目前对事务的支持还是比较简单,Redis能保证一个Client发起的事务中的命令可以连续执行,而中间不会插入其他Client的命令:当一个Client在连接中发起一个multi命令的时候,这 ...
- 【redis】redis常用命令及操作记录
redis-cli是Redis命令行界面,可以向Redis发送命令,并直接从终端读取服务器发送的回复. 它有两种主要模式:一种交互模式,其中有一个REPL(read eval print loop), ...
随机推荐
- jquery事件和动画操作集锦
一,事件 1,加载事件 1 2 3 4 5 6 $(document).ready(function(){ //todo }); //dom准备就绪后执行ready里面的函数,此时dom对应的相关 ...
- 深入理解计算机系统 BombLab 实验报告
又快有一个月没写博客了,最近在看<深入理解计算机系统>这本书,目前看完了第三章,看完这章,对程序的机器级表示算是有了一个入门,也对 C 语言里函数栈帧有了一个初步的理解. 为了加深对书本内 ...
- WebRTC开发者必备 | 《WebRTC1.0: 浏览器间实时通讯》中文版免费下载
随着移动互联网的崛起与完善,WebRTC的应用场景相较于它刚诞生时已经有了极大的变化,以图片和视频为代表的流媒体技术走向普及,交互式网站也逐渐成为互联网的新常态,因此WebRTC API应该把当前以及 ...
- Spark学习之路(九)—— Spark SQL 之 Structured API
一.创建DataFrame和Dataset 1.1 创建DataFrame Spark中所有功能的入口点是SparkSession,可以使用SparkSession.builder()创建.创建后应用 ...
- Java日志脱敏框架 sensitive-v0.0.4 系统内置常见注解,支持自定义注解
项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 特性 基于注解的日志脱敏. 可 ...
- 2018.11.2 2018NOIP冲刺之最短公共父串
很有意思的一个题 试题描述 给定字符串A和字符串B,要求找一个最短的字符串,使得字符串A和B均是它的子序列. 输入 输入包含两行,每行一个字符串,分别表示字符串A和字符串B.(串的长度不超过30) 输 ...
- Ural 2070:Interesting Numbers(思维)
http://acm.timus.ru/problem.aspx?space=1&num=2070 题意:A认为如果某个数为质数的话,该数字是有趣的.B认为如果某个数它分解得到的因子数目是素数 ...
- 致远A8任意文件写入漏洞_getshell_exp
近期爆出致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任 ...
- c++稍微复杂桶排序(未完待续~)
由于上次的桶排序占用空间太多,这次又有了一个新的办法 直接上代码: #include <bits/stdc++.h> using namespace std; int n; void bu ...
- Python入门基础(3 下)
接着讲列表里面的一些操作吧 列表元素访问与计数 1.统计指定元素在列表中出现的次数使用count(),这就不必细说了,直接看代码,需要记住的是括号里面放的是元素 list = [1,5,5,5,5,8 ...