redis学习笔记(14)---redis基本命令总结
http://doc.redisfans.com/ 网页,对所有redis命令的用法与示例进行了详细的描述
概述
Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。本文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方文档:Redis命令大全
字符串类型
字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB。字符串是其他四种类型的基础,与其他几种类型的区别从本质上来说只是组织字符串的方式不同而已。
基本命令
字符串操作
- SET 赋值,用法:
SET key value
- GET 取值,用法:
GET key
- 注意先设置键key的值再进行下面的增减
- INCR 递增数字,仅仅对数字类型的键有用,相当于Java的i++运算,用法:
INCR key
- INCRBY 增加指定的数字,仅仅对数字类型的键有用,相当于Java的i+=3,用法:
INCRBY key increment
,意思是key自增increment,increment可以为负数,表示减少。 - DECR 递减数字,仅仅对数字类型的键有用,相当于Java的i–,用法:
DECR key
- DECRBY 减少指定的数字,仅仅对数字类型的键有用,相当于Java的i-=3,用法:
DECRBY key decrement
,意思是key自减decrement,decrement可以为正数,表示增加。 - INCRBYFLOAT 增加指定浮点数,仅仅对数字类型的键有用,用法:
INCRBYFLOAT key increment
- APPEND 向尾部追加值,相当于Java中的”hello”.append(“ world”),用法:
APPEND key value
- STRLEN 获取字符串长度,用法:
STRLEN key
- MSET 同时设置多个key的值,用法:
MSET key1 value1 [key2 value2 ...]
- MGET 同时获取多个key的值,用法:
MGET key1 [key2 ...]
位操作
- GETBIT 获取一个键值的二进制位的指定位置的值(0/1),用法:
GETBIT key offset
- SETBIT 设置一个键值的二进制位的指定位置的值(0/1),用法:
SETBIT key offset value
- BITCOUNT 获取一个键值的一个范围内的二进制表示的1的个数,用法:
BITCOUNT key [start end]
- BITOP 该命令可以对多个字符串类型键进行位运算,并将结果存储到指定的键中,BITOP支持的运算包含:OR,AND,XOR,NOT,用法:
BITOP OP desKey key1
key2 - BITPOS 获取指定键的第一个位值为0或者1的位置,用法:
BITPOS key 0/1 [start, end]
散列类型
散列类型相当于Java中的HashMap,他的值是一个字典,保存很多key,value对,每对key,value的值个键都是字符串类型,换句话说,散列类型不能嵌套其他数据类型。一个散列类型键最多可以包含2的32次方-1个字段。
基本命令
- HSET 赋值,用法:
HSET key field value
- HMSET 一次赋值多个字段,用法:
HMSET key field1 value1 [field2 values]
- HGET 取值,用法:
HSET key field
- HMGET 一次取多个字段的值,用法:
HMSET key field1 [field2]
- HGETALL 一次取所有字段的值,用法:
HGETALL key
- HEXISTS 判断字段是否存在,用法:
HEXISTS key field
- HSETNX 当字段不存在时赋值,用法:
HSETNX key field value
- HINCRBY 增加数字,仅对数字类型的值有用,用法:
HINCRBY key field increment
- HDEL 删除字段,用法:
HDEL key field
- HKEYS 获取所有字段名,用法:
HKEYS key
- HVALS 获取所有字段值,用法:
HVALS key
- HLEN 获取字段数量,用法:
HLEN key
列表类型
列表类型(list)用于存储一个有序的字符串列表,常用的操作是向队列两端添加元素或者获得列表的某一片段。列表内部使用的是双向链表(double
linked
list)实现的,所以向列表两端添加元素的时间复杂度是O(1),获取越接近列表两端的元素的速度越快。但是缺点是使用列表通过索引访问元素的效率太低(需要从端点开始遍历元素)。所以列表的使用场景一般如:朋友圈新鲜事,只关心最新的一些内容。借助列表类型,Redis还可以作为消息队列使用。
基本命令
- LPUSH 向列表左端添加元素,用法:
LPUSH key value
- RPUSH 向列表右端添加元素,用法:
RPUSH key value
- LPOP 从列表左端弹出元素,用法:
LPOP key
- RPOP 从列表右端弹出元素,用法:
RPOP key
- LLEN 获取列表中元素个数,用法:
LLEN key
- LRANGE 获取列表中某一片段的元素,用法:
LRANGE key start stop
,index从0开始,-1表示最后一个元素 - LREM 删除列表中指定的值,用法:
LREM key count value
,删除列表中前count个值为value的元素,当count>0时从左边开始数,count<0时从右边开始数,count=0时会删除所有值为value的元素 - LINDEX 获取指定索引的元素值,用法:
LINDEX key index
- LSET 设置指定索引的元素值,用法:
LSET key index value
- LTRIM 只保留列表指定片段,用法:
LTRIM key start stop
,包含start和stop - LINSERT 像列表中插入元素,用法:
LINSERT key BEFORE|AFTER privot value
,从左边开始寻找值为privot的第一个元素,然后根据第二个参数是BEFORE还是AFTER决定在该元素的前面还是后面插入value - RPOPLPUSH 将元素从一个列表转义到另一个列表,用法:
RPOPLPUSH source destination
集合类型
集合在概念在高中课本就学过,集合中每个元素都是不同的,集合中的元素个数最多为2的32次方-1个,集合中的元素师没有顺序的。
基本命令
- SADD 添加元素,用法:
SADD key value1 [value2 value3 ...]
- SREM 删除元素,用法:
SREM key value2 [value2 value3 ...]
- SMEMBERS 获得集合中所有元素,用法:
SMEMBERS key
- SISMEMBER 判断元素是否在集合中,用法:
SISMEMBER key value
- SDIFF 对集合做差集运算,用法:
SDIFF key1 key2 [key3 ...]
,先计算key1和key2的差集,然后再用结果与key3做差集 - SINTER 对集合做交集运算,用法:
SINTER key1 key2 [key3 ...]
- SUNION 对集合做并集运算,用法:
SUNION key1 key2 [key3 ...]
- SCARD 获得集合中元素的个数,用法:
SCARD key
- SDIFFSTORE 对集合做差集并将结果存储,用法:
SDIFFSTORE destination key1 key2 [key3 ...]
- SINTERSTORE 对集合做交集运算并将结果存储,用法:
SINTERSTORE destination key1 key2 [key3 ...]
- SUNIONSTORE 对集合做并集运算并将结果存储,用法:
SUNIONSTORE destination key1 key2 [key3 ...]
- SRANDMEMBER 随机获取集合中的元素,用法:
SRANDMEMBER key [count]
,当count>0时,会随机中集合中获取count个不重复的元素,当count<0时,随机中集合中获取|count|和可能重复的元素。 - SPOP 从集合中随机弹出一个元素,用法:
SPOP key
有序集合类型
有序集合类型与集合类型的区别就是他是有序的。有序集合是在集合的基础上为每一个元素关联一个分数,这就让有序集合不仅支持插入,删除,判断元素是否存在等操作外,还支持获取分数最高/最低的前N个元素。有序集合中的每个元素是不同的,但是分数却可以相同。有序集合使用散列表和跳跃表实现,即使读取位于中间部分的数据也很快,时间复杂度为O(log(N)),有序集合比列表更费内存。
基本命令
- ZADD 添加元素,用法:
ZADD key score1 value1 [score2 value2 score3 value3 ...]
- ZSCORE 获取元素的分数,用法:
ZSCORE key value
- ZRANGE 获取排名在某个范围的元素,用法:
ZRANGE key start stop [WITHSCORE]
,按照元素从小到大的顺序排序,从0开始编号,包含start和stop对应的元素,WITHSCORE选项表示是否返回元素分数 - ZREVRANGE 获取排名在某个范围的元素,用法:
ZREVRANGE key start stop [WITHSCORE]
,和上一个命令用法一样,只是这个倒序排序的。 - ZRANGEBYSCORE 获取指定分数范围内的元素,用法:
ZRANGEBYSCORE key min max
,包含min和max,(min
表示不包含min,(max
表示不包含max,+inf
表示无穷大 - ZINCRBY 增加某个元素的分数,用法:
ZINCRBY key increment value
- ZCARD 获取集合中元素的个数,用法:
ZCARD key
- ZCOUNT 获取指定分数范围内的元素个数,用法:
ZCOUNT key min max
,min和max的用法和5中的一样 - ZREM 删除一个或多个元素,用法:
ZREM key value1 [value2 ...]
- ZREMRANGEBYRANK 按照排名范围删除元素,用法:
ZREMRANGEBYRANK key start stop
- ZREMRANGEBYSCORE 按照分数范围删除元素,用法:
ZREMRANGEBYSCORE key min max
,min和max的用法和4中的一样 - ZRANK 获取正序排序的元素的排名,用法:
ZRANK key value
- ZREVRANK 获取逆序排序的元素的排名,用法:
ZREVRANK key value
- ZINTERSTORE 计算有序集合的交集并存储结果,用法:
ZINTERSTORE destination numbers key1 key2 [key3 key4 ...] WEIGHTS weight1 weight2
,numbers表示参加运算的集合个数,weight表示权重,aggregate表示结果取值
[weight3 weight4 ...] AGGREGATE SUM | MIN | MAX - ZUNIONSTORE 计算有序几个的并集并存储结果,用法和14一样,不再赘述。
redis学习笔记(14)---redis基本命令总结的更多相关文章
- redis学习笔记之redis简介
redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...
- Redis学习笔记(4) Redis事务、生存时间及排序
1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次 ...
- Redis学习笔记(1) Redis介绍及基础
1. Redis的特性 (1) 存储结构 Redis(Remote Dictionary Server,远程字典服务器)是以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容.Redis支 ...
- StackExchange.Redis学习笔记(一) Redis的使用初探
Redis Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型. Redis可以将数据复制到任意数量的从机中 Redis的安装 官 ...
- Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置
0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...
- redis学习笔记(三)——redis的命令大全总结
总结了一些redis五种存储类型的常用命令以及一些通用操作命令,不是很全,是在学习的时候将学到的做了个汇总,使用的时候可以查一下. 笔记写在表格里面了,不好粘贴.......后面的直接截图了..... ...
- Redis学习笔记(3) Redis基础类型及命令之二
1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...
- Redis学习笔记~StackExchange.Redis实现分布式Session
回到目录 对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现 ...
- Redis学习笔记(2) Redis基础类型及命令之一
1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...
- Redis学习笔记之Redis基本数据结构
Redis基础数据结构 Redis有5种基本数据结构:String(字符串).list(列表).set(集合).hash(哈希).zset(有序集合) 字符串string 字符串类型是Redis的va ...
随机推荐
- VS2010安装OpenGL
以下涉及到的所有资源都在这里: 链接:https://pan.baidu.com/s/1eSctT5K 密码:174s *我的VS2010的安装位置:D:\Program Files (x86)\M ...
- Jupyter Notebook使用小技巧
在 C:\Windows\Fonts目录下找到Mircosoft YaHei UI字体,然后复制到[你的Python安装路径]/Lib/site-packages/matplotlib/mpl-dat ...
- JSP的三种注释方式
HTML注释(输出注释):指在客户端查看源代码时能看见注释.例如, <!-- this is an html comment.it will show up int the response. ...
- Python 实现网页截屏、查库、发邮件
本文介绍了使用 Python(2.7版本)实现网页截屏.查库.发邮件的 demo.用到了 selenium.phantomjs.mailer.jinja2.mysqldb 还有 image,都是比较典 ...
- PXE+kickstart网络安装CentOS7.4系统及过程中各种报错
环境:关闭防火墙.selinux 注意:虚拟机进行网络安装的话,7.3以后的系统是需要2G以上的内存 [root@kickstart ~]# cat /etc/redhat-release CentO ...
- 带以太网的MicroPython开发板:TPYBoardv201建立云加法器实例
转载请注明文章来源,MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇 前面的一篇文档向大家介绍了v201的开发板作为客户端终端向TCPS上传数据的基本过程 ...
- GUI—ST_emWin移植
GUI-ST_emWin移植 一.st_emwin移植 1.stemwin源文件下载:ST官网 https://my.st.com/content/my_st_com/en/search.html#q ...
- bootstrap媒体查询
Bootstrap 中的媒体查询允许您基于视口大小移动.显示并隐藏内容.下面的媒体查询在 LESS 文件中使用,用来创建 Bootstrap 网格系统中的关键的分界点阈值. /* 超小设备(手机,小于 ...
- .net 下发送calendar
前段时间公司系统中有一块需要发送邮件calendar outlook可以接受查看calendar 发送outlook主要是有rrule脚本的边界 网上找过一些资料,主要有两种实现方式 1.一种是已ic ...
- linux系统编辑神器 -vim用法大全
vim编辑器 文本编辑器,字处理器ASCII nano, sed vi: Visual Interfacevim: VI iMproved 全屏编辑器,模式化编辑器 vim模式:编辑模式(命令模式)输 ...