redis笔记总结之redis数据类型及常用命令
三、常用命令
3.1 字符串类型(string)
字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB。
3.1.1 赋值与取值:
SET key value
GET key
3.1.2 递增数字:
INCR key //每执行一次递增1
INCRBY key num //每执行一次递增num
需注意的是如果多个客户端同时连接一个Redis时存在同时操作同一个key的隐患,将在事务讲解原子性。
适用事例:文章统计量访问;生成自增ID;存储文章数据。
3.1.3 递减数字
DECR key //每执行一次递减1
DECRBY key num //每执行一次递减num
3.1.4 增加指定浮点数
INCRBYFLOAT key num
3.1.5 向尾部增加值
APPEND key value
3.1.6 获取字符串长度
STRLEN key //每个汉字占用3个长度
3.1.7 同时设置/获取多个键值
MSET key1 value1 key2 value2 ...
MGET key1 key2 ....
3.2 散列类型(hash)
散列类型的字段值只能是字符串,包括不能嵌套其他的数据类型,其他的Redis数据类型也是不能嵌套
散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,字段值存储属性值,如图所示:

3.2.1 赋值与取值
HSET key field value //设置对象单一属性值
HGET key field //获取对象单一属性值
HMSET key field1 value1 field2 value2 ... //设置对象多个属性值
HMGET key field1 field2 ... //获取对象多个属性值
HGETALL key //获取对象所有的键值
说明:HSET不区分是更新操作还是插入操作,当键不存在时,执行的是插入操作,返回的是1;当键存在时,执行更新操作,返回0。
3.2.2 判断字段是否存在
HEXISTS key field
3.2.3 当字段不存在时赋值
HSETNX key field value
说明:HSETNX和SET类似,只不过HSETNX是当字段存在时不进行任何的操作。
3.2.4 增加数字
HINCRBY key field num
说明:字符串类型有INCR和INCRBY,散列类型没有HINCR命令,可以使用HINCRBY key field 1来实现
3.2.5 删除字段
HDEL key field //返回被删除字段个数
HDEL key field1 field2 ...
3.2.6 只获取字段名或字段值
HKEYS key
HVALS key
3.2.7 获取字段数量
HLEN key
3.3 列表类型(list)
优点:列表数据类型的内部是使用双向列表实现的,获取接近链表两端的数据速度非常快。
缺点:通过索引访问元素非常慢。
3.3.1 向列表两端添加元素
LPUSH key value //向左边添加元素,指下一个元素添加在上一个元素的左边,依次往左
RPUSH key value //向右边添加元素
3.3.2 从列表两端弹出元素
LPOP key //在列表左边一次弹出一个,相当于在原列表中删除一个元素,返回弹出的元素
RPOP key
说明:若想要列表当做栈,使用LPUSH和LPOP或者RPUSH和RPOP;若想要列表当队列,使用LPUSH和RPOP或RPUSH和LPOP
3.3.3 获取列表中元素的个数
LLEN key
3.3.4 获取列表片段
LRANGE start stop //获取从start到stop之间的元素,索引从0开始
3.3.5 删除列表中指点的值
LREM key count value
当count>0时,LREM从列表左边删除count个值为value的元素;
当count<0时,LREM从列表右边删除count个值为value的元素;
当count=0时,LREM会删除列表中所有值为value的元素。
3.3.6 获取/设置指定索引的元素值
LINDEX key index
LSET key index value
3.3.7 只保留列表指定片段
LTRIM key start end
说明:LTRIM只保留从start到end的元素,列表其他元素都会被删除,这不同于LRANG的使用
3.3.8 向列表中插入元素
LINSERT key BEFORE/AFTER pivot value
说明:在列表中查找值为pivot的元素,根据after还是before来插入元素,返回的是插入元素后的个数。
3.4 集合类型(set)
集合里存储的数据是无序的、唯一的。
3.4.1 增加/删除元素
SADD key num ...
SREM key num ...
说明:既然集合是无序且唯一的,如果添加元素时集合中已经存在,则忽略次元素;若不存在则自动创建。
3.4.2 获取集合中的所有元素
SMEMBERS key
3.4.3 判断元素是否在集合中
SISMEMBER key num //当值存在返回1,当值或键不存在时返回0
3.4.4 集合间运算
SDIFF key num ... //差集,属于A集合但不属于B集合
SINTER key num ... //交集,属于A集合同时也属于B集合
SUNION key num ... //并集,所有属于A或属于B构成的集合(A集合和B集合相加后去重)
3.4.5 获得集合中元素的个数
SCARD key
3.4.6 进行集合运算并将结果存储
SDIFFSTORE destination key
SINTERSTORE destination key
SUNIONSTORE destination key
说明:SDIFFSTORE和SDIFF类似,只不过前者是将运算的结果存储到destination中,适用于将集合计算后的结果再与其他的集合运算。
3.4.7 随机获得集合中的元素
SRANDMEMBER key [count] //还可以传递count值来一次获取多个元素
说明:当count为正数时,会随机在集合中获取count个不重复的元素,当count大于集合长度时,则会返回集合的全部元素;
当count为负数时,会随机从集合中获取|count|个有可能重复的元素。
3.4.8 从集合中弹出一个元素
SPOP key
说明:之前列表类型的LPOP是每次从列表左边弹出元素,由于集合元素是无序的,SPOP会从集合中随机弹出一个元素。
3.5 有序集合类型(zset)
有序集合类型和列表类型相似之处:
(1)二者都是有序的;
(2)二者都可以获取某一范围内的元素;
有序集合类型和列表类型区别之处:
(1)列表类型内部是链表结构,对两端的元素操作速度快,对中间的操作速度慢;
(2)有序列表类型是使用散列表和跳跃表实现的,所以阅读中间部分的数据也很快;
(3)列表中不能简单的调整某个元素的位置,有序可以使用分数来实现;
(4)有序列表类型要比列表类型更耗费内存。
3.5.1 添加元素
ZADD key score num ... //如果添加的元素存在,则会用新的分数来替换掉旧的分数
3.5.2 获取元素的分数
ZSCORE key num
3.5.3 获取某个范围内的元素
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
说明:ZRANGE的顺序是从小到大,索引从0开始,ZREVRANGE是从大到小排列。WITHSCORES是排序的时候带着分数。
若两个元素的分数相同,则会按照字典顺序排列("0"<"9<"A"<"Z"<"a"<"z")
3.5.4 获取指定分数范围内的元素
ZRANGBYSCORE key min max [WITHSCORES] [LIMIT offset count]
说明:ZRANGEBYSCORE也是从小到大排序,若不希望包含端点值,则可以在score前加上"("符号。此外,-inf和+inf代表负无穷和正无穷。
LIMIT offset count 在获得的元素列表的基础上向后偏移offset个元素,获取前count个元素。
3.5.5 增加某个元素的分数
ZINCRBY key increment num
说明:若increment为负数,则代表减分。若指定的元素不存在,Redis会先创建并赋值为0后再进行操作。
3.5.6 获取集合中元素的数量
ZCARD key
3.5.7 获取指定分数范围内元素的个数
ZCOUNT key min max
3.5.8 删除一个或多个元素
ZREM key num ...
3.5.9 按照排名范围删除元素
ZREMRANGEBYRANK key start stop ...
3.5.9.1 按照分数范围删除元素
ZREMRANGEBYSCORE key start stop ...
3.5.9.2 获得元素的排名
ZRANK key num ...
ZREVRANK key num ..
说明:获取的排名是从0开始的,ZRANK为分数最小的排名为0;ZREVRANK为分数最大的排名为0。
redis笔记总结之redis数据类型及常用命令的更多相关文章
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- 分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令
Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...
- 分布式缓存技术redis学习(二)——详细讲解redis数据结构(内存模型)以及常用命令
Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...
- 详细讲解redis数据结构(内存模型)以及常用命令
Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...
- redis系列之2----详细讲解redis数据结构(内存模型)以及常用命令
Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- redis五种数据类型和常用命令及适用场景
一.redis的5种数据类型: 1.基础理解: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) h ...
- Redis的数据类型及其常用命令
快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...
- Redis集群(六):集群常用命令及说明
一.本文目的 介绍集群的基本情况及常用命令 二.集群的特点 3.集群优缺点 三.集群客户端命令(redis-cli -c -p port) 集群cluster info ...
随机推荐
- Log4j与Log4j2
完整的软件,日志是必不可少的.程序从开发.测试.维护.运行等环节,都需要向控制台或文件等位置输出大量信息.这些信息的输出,在很多时候是System.out.println()无法完成日志信息根据用途与 ...
- CodeForces - 796B 模拟
思路:模拟移动即可,如果球落入洞中停止移动.注意:有可能第一个位置就是洞!! AC代码 #include <cstdio> #include <cmath> #include ...
- <CEPH中国-深圳站-技术交流会演讲PPT> YY云平台Ceph Block应用实践 & 我写的书 《CEPH实战》
YY云平台Ceph Block应用实践 http://s3.yyclouds.com/public/YY%E4%BA%91%E5%B9%B3%E5%8F%B0Ceph%E5%AE%9E%E8%B7%B ...
- 阿里舆情︱舆情热词分析架构简述(Demo学习)
本节来源于阿里云栖社区,同时正在开发一个舆情平台,其中他们发布了一篇他们所做的分析流程,感觉可以作为案例来学习.文章来源:觉民cloud/云栖社区 平台试用链接:https://prophet.dat ...
- 如何访问pcie整个4k的配置空间
目前用于访问PCIe配置空间寄存器的方法需要追溯到原始的PCI规范.为了发起PCI总线配置周期,Intel实现的PCI规范使用IO空间的CF8h和CFCh来分别作为索引和数据寄存器,这种方法可以访问所 ...
- VxWorks启动过程详解(下)
上一节主要是从映像的分类和各种映像的大致加载流程上看VxWorks的启动过程,这一节让我们从函数级看一下VxWorks的启动过程: 1. Boot Image + Loadable Images: 下 ...
- Linux显示目前登入系统的用户信息
Linux显示目前登入系统的用户信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ who youhaidong :0 2015-01-26 22:43 (: ...
- Vue项目搭建及原理三
我每次写博客都要先在本地写一遍草稿,所以之前有些发布顺序可能会有一丢丢凌乱 哈哈哈,以后绝对改正,那下面我们就说一下创建及项目目录结构吧 三.创建项目 1.初始化Webpack p.p1 { marg ...
- CSS的继承性与优先级
一.CSS的继承性 在CSS中不可继承的属性:display.margin.padding.border.background.width.min-width.max-width.height.min ...
- java 后台封装json数据学习总结(一)
一.数据封装 1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( &quo ...