redis数据类型及常用命令介绍(图文实例)

  上图中即为redis中5种基本数据类型,在没接触过redis之前,听过最多相关的字眼就是键值对key-value之类,立马让我想到了HashMap。在HashMap中,key和value的的数据类型都可以指定,value也可以是HashMap类型。而在这里,redis的基本数据类型是针对的value,有这5种。

  文中所用测试记录环境在Linux下,命令操作在SSH客户端下,这里使用的是Xshell 5,个人使用感觉很方便,同一系列的Xftp 5用于远程文件上传操作也很不错。如有需要,可直接进入官网下载,有免费版本(Free for Home/School),点击传送门,也可以留下邮箱,我会尽快发送过去。

  一、字符串(String)常用命令

  

1    SET key value
设置指定 key 的值
2    GET key
获取指定 key 的值
3    GETRANGE key start end
返回 key 中字符串值的子字符串(这里的start和end即起始子字符的索引,例如字符串abcde,取1至3,即拿到bcd,索引从0开始计数)
4    GETSET key value
将给定 key 的值设为 value ,并返回 key 的旧值
5    MSET key value [key value ...]
同时设置一个或多个 key-value 对。(对比MGET)
6    MGET key1 [key2..]
获取所有(一个或多个)给定 key 的值。(这里的M可以记忆为Many,许多的意思,便于理解)
7    SETEX key seconds value
将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
8    SETNX key value
只有在 key 不存在时设置 key 的值。(这里的SETNX,后面的NX,个人记忆为Not Exists,不存在的)
9    MSETNX key value [key value ...]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
10    STRLEN key
返回 key 所储存的字符串值的长度。(String 的 Length)
11    SETEX key seconds value
将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
12    PSETEX key milliseconds value
这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
13    INCR key
将 key 中储存的数字值增一。(String中存为类似102、88的数字字符串情况)
14    INCRBY key increment
将 key 所储存的值加上给定的增量值(increment)(上面的是加一,如果想增量为指定数值,即可用该命令)
15    INCRBYFLOAT key increment
将 key 所储存的值加上给定的浮点增量值(increment) 。
16    DECR key
将 key 中储存的数字值减一。
17    DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。
18    APPEND key value
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 

  二、Hash(哈希)常用命令

  由于是Hash类型的相关命令,可以看到,命令开头字符均为H。说起Hash、Key-Value、键值对,第一时间想到了Map/HashMap,多个键值对?同时,我们在开发过程中操作的那些实体对象,往往有多个属性,而它们的属性和属性值一一对应起来是不是跟这里的键值对有点吻合,在redis里,每个hash可以存储2的32次方-1个键值对(40多亿),所以hash很适合存储对象。

1    HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。
2    HSETNX key field value
只有在字段 field 不存在时,设置哈希表字段的值。
3    HGET key field
获取存储在哈希表中指定字段的值。
4    HMSET key field1 value1 [field2 value2 ]
同时将多个 field-value (域-值)对设置到哈希表 key 中。
5    HMGET key field1 [field2]
获取所有给定字段的值
6    HGETALL key
获取在哈希表中指定 key 的所有字段和值(这个命令获取到其中完整内容了,实际情况下数据量巨大的时候不适用)
7    HKEYS key
获取所有哈希表中的字段
8    HVALS key
获取哈希表中所有值
9    HEXISTS key field
查看哈希表 key 中,指定的字段是否存在。
10    HLEN key
获取哈希表中字段的数量
11    HDEL key field1 [field2]
删除一个或多个哈希表字段
12    HINCRBY key field increment
为哈希表 key 中的指定字段的整数值加上增量 increment 。
13    HINCRBYFLOAT key field increment
为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

  三、列表(List)常用命令

  Redis的list是元素都为String类型的双向链表,既然是双向列表,操作也分双向,这里的列表头部即左边第一个或者首个,列表尾部即右边方向第一个或者首个。以LRANGE key start stop为例,该命令用于获取列表指定范围内的元素,这里LRANGE指定从左到右方向,key为键名称,start和end分别代表想要获取的范围起始元素的索引,例子:创建列表testList,内容为 C C++ C# Java Php Python,一共6个元素(命令RPUSH testList C C++ C# Java Php Python),了解数组等结构的不难知道,由于索引是从0开始,所以这6个元素的索引从左至右分别为0 1 2 3 4 5,所以如果我们想要获取Java Php Python这3个元素,我们用(命令LRANGE testList 3 5)即可得到想要的结果,引申到这里的redis双向列表,使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推,则上述6个元素的索引从左到右也可以置为-6 -5 -4 -3 -2 -1 ,这样一来,我们的获取方式更加灵活了,不论列表长度多少,我们想要获取全部元素的话都可以通用 LRANGE Key 0 -1来实现。例子中四种方式如下图示意。

List作为双向链表,下图简单示例双向操作过程

1    LPUSH key value1 [value2]
将一个或多个值从左插入到列表头部
2    LPUSHX key value
将一个值从左插入到已存在的列表头部
3    RPUSH key value1 [value2]
将一个或多个值从右插入到列表尾部
4    RPUSHX key value
将一个值从右插入到已存在的列表尾部
5    LLEN key
获取列表长度
6    LPOP key
移出并获取列表的第一个元素
7    RPOP key
移除并获取列表最后一个元素
8    LINDEX key index
通过索引获取列表中的元素
9    LSET key index value
通过索引设置列表元素的值
10    LRANGE key start stop
获取列表指定范围内的元素
11    LREM key count value
移除列表元素(记忆为left remove)
count > 0 : 从左向右,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从右向左,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
12    LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
13    BLPOP key1 [key2 ] timeout
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
14    BRPOP key1 [key2 ] timeout
移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。(与上者区别,一个是针对左边也就是列表首部,一个是右边
也就是尾部。这个timeout是阻塞时间,以秒为单位)
15    BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
16    LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素(这个地方要注意,如果里列表中有重复元素,插入过程只会发生在第一个元素上)
17    RPOPLPUSH source destination
移除列表的最后一个元素,并将该元素添加到另一个列表并返回

  四、集合(Set)常用命令

  Set是string类型的无序集合,与列表List中可存放重复元素不同,Set中不能出现重复元素。

命令均以首字母s开头
1    SADD key member1 [member2]
向集合添加一个或多个成员
2    SCARD key
获取集合的成员数
3    SISMEMBER key member
判断 member 元素是否是集合 key 的成员(是的话返回1,否则返回0)
4    SMEMBERS key
返回集合中的所有成员
5    SREM key member1 [member2]
移除集合中一个或多个成员(返回删除数量)
6    SPOP key
移除并返回集合中的一个随机元素
7    SRANDMEMBER key [count]
返回集合中一个或多个随机数
8    SDIFF key1 [key2]
返回给定所有集合的差集
9    SDIFFSTORE destination key1 [key2]
返回给定所有集合的差集并存储在 destination 中
10    SINTER key1 [key2]
返回给定所有集合的交集
11    SINTERSTORE destination key1 [key2]
返回给定所有集合的交集并存储在 destination 中
12    SUNION key1 [key2]
返回所有给定集合的并集
13    SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中

示例操作如下图

  五、有序集合(sorted set)命令

  有序集合(sorted set)与集合(set)一样均不允许重复元素,区别在于有序集合是有序的,而且每个元素都会对应有一个double类型的分数(score),这个分数就是排序的依据,按照分数从小到大(PS:有序集合中元素不能重复,但是分数是可以重复的)。之前通过SADD命令添加集合元素我们是无法保证顺序和插入位置的,这里通过改变分数值来控制排序和插入位置。

命令区别于set均已z开头。
1    ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2    ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员(0 -1分别可以对应第一个和最后一个元素)
3    ZCARD key
获取有序集合的成员数
4    ZSCORE key member
返回有序集中,成员的分数值
5    ZRANK key member
返回有序集合中指定成员的索引(从0开始,左至右)
6    ZCOUNT key min max
计算在有序集合中指定区间分数的成员数
7    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员
8    ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序(PS:排名最高即分数最高的为0,当分数相同时,与存储顺序反向排序定位)
9    ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底
10    ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序
11    ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
12    ZREM key member [member ...]
移除有序集合中的一个或多个成员
13    ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员
14    ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员
15    ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集,并存储在新的 key 中
16    ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中

示例操作如下图

  小结

  乍一看感觉密密麻麻的命令一大堆,实际开发过程我们更多的是利用各种编程语言封装的API去操作redis,比如java的jedis之类,但是在真正把redis上手或者引进开发项目之前,熟悉一下命令,有助于我们更好地理解其思想和提供的功能。例如很多数据库API设计也是对应了数据库功能或者命令,我们熟知的关系型数据库MySql、Oracle之类,在数据库里命令操作常用CRUD,所以相关持久层API设计也会封装相应方法。建议命令过一遍,不一定非要所有命令记得死死的,重点要知道各个数据类型是什么结构,有什么特点,分别有些什么操作。

时间: 2024-08-25 21:41:50

redis数据类型及常用命令介绍(图文实例)的相关文章

redis数据类型及常用命令

一.redis数据类型 Redis的五大数据类型 1.string(字符串) String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M 2.hash(哈希,类似java里的Map) Hash(哈希) R

转:maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd

debug常用命令介绍(学习汇编)

显示所有寄存器内容 格式:-r  功能:以十六进制形式显示cpu内部个寄存器的值:以符号形式显示标志寄存器的各标志位(除tf外)的值:并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令.如: -r   回车AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=0AF0  ES=0AF0  SS=0AF0  CS=0AF0  IP=0200   NV UP EI PL NZ NA PO NC

Dockerfile命令介绍及实例

Dockerfile命令介绍及实例 当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层.这些基础镜像可以用于创建新的容器.本篇文章将手把手教您如何从基础镜像,一步一步,一层一层的从Dockerfile构建容器的过程. 基础镜像可以用于创建Docker容器.镜像可以非常基础,仅仅包含操作系统:也可以非常丰富,包含灵巧的应用栈,随时可 以发布.当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层.这些基础镜像可以用于创建新的容器.

maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd

linux系统防火墙相关问题及常用命令介绍

今天介绍关于linux系统防火墙:centos5.centos6.redhat6系统自带的是iptables防火墙,centos7.redhat7自带firewall防火墙,ubuntu系统使用的是ufw防火墙.本平台www.gxdeqiong.com 安装的是iptables防火墙(其他云服务供应商可能使用的是其他防火墙). 防火墙导致服务不正常的问题: 在服务器安装某些服务之后,服务无法连接.无法正常启动等情况.查看下系统防火墙有没开放相关的服务端口.(linux系统防火墙开放相关端口后还要

Redis 学习之常用命令及安全机制

该文使用centos6.5 64位    redis3.2.8 一.redis常用命令 键值常用命令: 1. keys 返回满足pattern的所有key. 127.0.0.1:6379> keys my* 127.0.0.1:6379> keys * 2.exits 确认key是否存在. 返回1表示存在 0表示不存在 127.0.0.1:6379> exists name 3.del :删除一个键 返回1:删除成功 0:失败 127.0.0.1:6379> del name (i

Redis学习(5)-常用命令

Redis常用命令Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用1.键值相关命令2.服务器相关命令 键值相关命令 Keys pattern 例如:keys *返回满足给定pattern的所有key exists 确认一个key是否存在 del删除一个key expire设置一个key的过期时间例如:expire addr 10  (时间10 s)ttl addr(使用ttl,获取addr的有效时长)返回-1,已经过期 move将当前数据库中的key转

【转】redis集群常用命令及说明

一.本文目的 介绍集群的基本情况及常用命令 二.集群的特点 3.集群优缺点 三.集群客户端命令(redis-cli -c -p port) 集群cluster info :打印集群的信息cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息.节点cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子.cluster forget <node_id> :从集群中移