`

redis 命令详解

阅读更多

redis数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。

    redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。

    原子操作:最小的操作单位,不能继续拆分。即最小的执行单位,不会被其他命令插入。高并发下不存在竞态条件。

    KEY的命名:一个良好的建议是article:1:title来存储ID为1的文章的标题。

    一、前言。

        1、获取key的列表:KEYS pattern 通配符有?*[]和转义\

        2、key是否存在: EXISTS key 存在返回1,不存在返回0.

        3、建立key和删除key:SET key 和 DEL key

        4、根据key获取该键所存储的redis数据类型:TYPE key。返回是string、list、hash、set、zset。下面会对这5种返回的redis数据类型逐一讲解。

        5、rename oldkey newkey:对key重命名,如果newkey存在则覆盖。

        6、renamenx oldkey newkey:对key重命名,如果newkey存在则不覆盖。

        7、randomkey:随即返回一个key

        8、move key db-index:将key移动到指定的数据库中,如果key不存在或者已经在该数据库中,则返回0。成功则返回1.

 

 

    二、Redis数据类型 Redis数据命令

      1、Redis数据类型一字符串类型:

            这个很好理解,一个key存储一个字符串。如果你要存数据呢?转换成Json或者其他的字符串序列化。

 

      2、Redis数据命令一字符串类型:

            1)赋值:SET key value。如set hello world

            2)取值:GET key。如get hello。返回是world

            3)自增:INCR key。就是Mysql的AUTO_INCREMENT。每次执行INCR key时,该key的值都会+1.若key不存在,则先建立一个0,然后+1,返回1。如果值不是整数则报错。该操作是原子操作。

            4)自减:DECR key。将指定key的值减少1.如DECR num,就是num-1

            5)自增N:INCRBY key increment用来给指定key的值加increment。如INCRBY num 5就是num+5

            6)自减N:DECRBY key increment用来给指定key的值减increment。如DECRBY num 5就是num-5

            7)增加浮点数:INCRBYFLOAT key increment。

            8)向尾部追加:APPEND key value。如set test:key 123     append test:key 456      get test:key就是123456

            9)获取长度:STRLEN key。

            10)同时给多个key 赋值:MSET title 这是标题 description 这是描述 content 这是内容。

            11)同时获取多个key的值:MGET title description content

            12)位操作之获取:GETBIT key offset。如字符a在redis中的存储为01100001(ASCII为98),那么GETBIT key 2就是1,GET key 0就是0。

            13)位操作之设置:SETBIT key offset value。如字符a在redis中的存储为01100001(ASCII为98),那么SETBIT key 6 0,SETBIT key 5 1那么get key得到的是b。因为取出的二进制为01100010。

            14)位操作之统计:BITCOUNT key [start] [end]:BITCOUNT key用来获取key的值中二进制是1的个数。而BITCOUNT key start end则是用来统计key的值中在第start和end之间的子字符串的二进制是1的个数(好绕啊)。

            15)位操作之位运算:BITOP operation resultKey key1 key2。operation是位运算的操作,有AND,OR,XOR,NOT。resultKey是把运算结构存储在这个key中,key1和key2是参与运算的key,参与运算的key可以指定多个。

 

      3、Redis数据类型二散列类型:

 

        Redis是以字典(关联数组)的形式存储的,一个key对应一个value。在字符串类型中,value只能是一个字符串。那么在散列类型,也叫哈希类型中,value对应的也是一个字典(关联数组)。那么就可以理解,Redis的哈希类型/散列类型中,key对应的value是一个二维数组。但是字段的值只可以是字符串。也就是说只能是二维数组,不能有更多的维度。

 

      4、Redis数据命令二散列类型:

            1)赋值:HSET key field value。如hset user name lane。hset user age 23

            2)取值:HGET key field。如hget user name,得到的是lane。

            3)同一个key多个字段赋值:HMSET key field1 value1 field2 value2...

            4)同一个KEY多个字段取值:HMGET key field1 fields2...

            5)获取KEY的所有字段和所有值:HGETALL key。如HGETALL user得到的是name lane age 23。每个返回都是独立的一行。

            6)字段是否存在:HEXISTS key field。存在返回1,不存在返回0

            7)当字段不存在时赋值:HSETNX key field value。如果key下面的字段field不存在,则建立field字段,且值为value。如果field字段存在,则不执行任何操作。它的效果等于HEXISTS + HSET。但是这个命令的优点是原子操作。再高的并发也不会怕怕。

            8)自增N:HINCREBY key field increment。同字符串的自增类型,不再阐述。

            9)删除字段:DEL key field1 field2...删除指定KEY的一个或多个字段。

            10)只获取字段名:HKEYS key。与HGETALL类似,但是只获取字段名,不获取字段值。

            11)只获取字段值:HVALS key。与HGETALL类似,但是只获取字段值,不获取字段名。

            12)获取字段数量:HLEN key。

 

      5、Redis数据类型三列表类型:

            列表类型存储了一个有序的字符串列表。常用的操作是向两端插入新的元素。时间复杂度为O(1)。结构为一个链表。记录头和尾的地址。看到这里,Redis数据类型的列表类型一个重大的作用呼之欲出,那就是队列。新来的请求插入到尾部,新处理过的从头部删除。另外,比如微博的新鲜事。比如日志。列表类型就是一个下标从0开始的数组。由于是链表存储,那么越靠近头和尾的元素操作越快,越靠近中间则越慢。

 

      6、Redis数据命令三列表类型:

            1)向头部插入:LPUSH key value1 value2...。返回增加后的列表长度。

            2)向尾部插入:RPUSH key value1 value2...。返回增加后的列表长度。

            3)从头部弹出:LPOP key。返回被弹出的元素值。该操作先删除key列表的第一个元素,再将它返回。

            4)从尾部弹出:RPOP key。返回被弹出的元素值。

            5)列表元素个数:LLEN key。key不存在返回0。

            6)获取列表的子列表:LRANGE start end。返回第start个到第end个元素的列表。包含start和end。支持负数索引。-1表示最后一个元素,-2表示倒数第二个元素。

            7)删除列表中指定值:LREM key count value。删除key这个列表中,所有值为value的元素,只删除count。如果有count+1个,那么就保留最后一个。count不存在或者为0,则删除所有的。如果count大于0,则删除从头到尾的count个,如果count小于0,则删除从尾到头的count个。

            8)获取指定索引值:LINDEX key index。如LINDEX key 0就是列表的第一个元素。index可以是负数。

            9)设置索引和值:LSET key index value。这个操作只是修改指定key且指定index的值。如果index不存在,则报错。

            10)保留片段,删除其它:LTRIM key start end。保留start到end之间的所有元素,含start和end。其他全部删除。

            11)向列表插入元素:LINSERT key BEFORE/AFTER value1 value2。从列表头开始遍历,发现值为value1时停止,将value2插入,根据BEFORE或者AFTER插入到value1的前面还是后面。

            12)把一个列表的一个元素转到另一个列表:RPOPLPUSH list1 list2。将列表list1的右边元素删除,并把该与元素插入到列表list2的左边。原子操作。

 

      7、Redis数据类型四集合类型:

            集合类型是为了方便对多个集合进行操作和运算。集合中每个元素不同且没有顺序的概念,每个元素都是且只能是一个字符串。常用操作是对集合插入、删除、判断等操作。时间复杂度尾O(1)。可以进行交集、并集、差集运算。例如文章1的有3个标签,是一个Redis数据类型集合类型存储。文章2有3个标签,有一个Redis数据类型集合类型存储。文章是1是mysql,文章2是讲redis。那么交集是不是就交出了一个数据库?(假设数据库这个tag在两篇文字都有)。集合类型在redis中的存储是一个值为空的散列表。

 

      8、Redis数据命令四集合类型:

            1)增加:SADD key value。

            2)删除:SREM key value。

            3)获取指定集合的所有元素:SMEMBERS key。

            4)判断某个元素是否存在:SISMEMBER key value。

            5)差集运算:SDIFF key1 key2...。对多个集合进行差集运算。

            6)交集运算:SINNER key1 key2...。对多个集合进行交集运算。

            7)并集运算:SUNION key1 key2...。对多个集合进行并集运算。

            8)获取集合中元素个数:SCARD key。返回集合中元素的总个数。

            9)对差集、交集、并集运算的结果存放在一个指定的key中:SDIFFSTORE storekey key1 key2。对key1和key2求差集,结果存放在key为storekey的集合中。SINNERSTORE和SUNIONSTORE类似。

            10)获取集合中的随即元素:SRANDMEMBER key [count]。参数count可选,如果count不存在,则随即一个。count大于0,则是不重复的count个元素。count小于0,则是一共|count|个元素,可以重复。

            11)随即弹出一个元素:SPOP key。随即从集合中弹出一个元素并删除,将该元素的值返回。

 

      9、Redis数据类型五有序集合类型:

            集合类型是无序的,每个元素是唯一的。那么有序集合就是有序的,每个元素是唯一的。有序集合类型和集合类型的差别是,有序集合为每个元素配备了一个属性:分数。有序集合就是根据分数来排序的。有序集合是使用散列表和跳跃表实现的。所以和列表相比,操作中间元素的速度也很快。时间复杂度尾O(log(N))。Redis数据类型中的有序集合类型比Redis数据类型中的列表类型更加耗费资源。

 

      10、Redis数据命令五有序集合类型:

            1)增加:ZADD key sorce1 value1 sorce2 value2...。

            2)获取分数:ZSCORE key value。获取key的有序集合中值为value的元素的分数。

            3)获取排名在某个范围内的元素列表:ZRANFGE key start stop [WITHSCORE]。获取排名在start和end之间的元素列表,包含start和end2个元素。每个元素一行。如果有WITHSCORE参数,则一行元素值,一行分数。时间复杂度为O(LOGn+m)。如果分数相同,则0<0<A<Z<a<z。

            4)获取指定分数范围的元素:ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count]。获取分数在min和max之间的元素列表。含两头。每个元素一行。如果有WITHSCORE参数,则一行元素值,一行分数。如果min大于max则顺序反转。

            5)为某个元素增加分数:ZINCRBY key increment value。指定的有序集合的值为value的元素的分数+increment。返回值后更改后的分数。

            6)获取集合中元素的数量:ZCARD key。

            7)获取指定分数范围内的元素个数:ZCOUNT key min max。

            8)删除一个或多个元素:ZREM key value1 value2...

            9)根据排名范围删除元素:ZREMRANGEBYRANK key start end。删除排名在start和end中的元素。

            10)按照分数范围删除元素:ZREMRANGEBYSCORE key min max。

            11)获得元素排名(正序):ZRANK key value。获取value在该集合中的从小到大的排名。

            12)获得元素排名(倒序):ZREVRANK key value。获取value在该集合中从大到小的排名。

            13)有序集合的交集:ZINTERSTORE storekey key1 key2...[WEIGHTS weight [weight..]] [AGGREGATE SUM|MIN|MAX]。用来计算多个集合的交集,结果存储在storekey中。返回值是storekey的元素个数。AGGREGATE为SUM则storekey集合的每个元素的分数是参与计算的集合分数和。MIN是参与计算的分数最小值。MAX是参与计算分数最大值。WEIGHTS 设置每个集合的权重,如WEIGHTS 1 0.1。那么集合A的每个元素分数*1,集合B的每个元素分数*0.1

            14)有序集合的并集:ZUNIONSTORE storekey key1 kye2...[WEIGHTS weight [weight..]] [AGGREGATE SUM|MIN|MAX]

分享到:
评论

相关推荐

    redis命令详解

    ### Redis 命令详解 #### 一、前言与基础知识 Redis 是一款开源的、高性能的键值存储系统,支持多种数据结构如字符串、散列、列表、集合及有序集合等。它以其低延迟、高并发访问能力而著称,并且支持数据持久化、...

    redis命令集合,redis命令详解

    redis命令集合,redis命令详解 适合全体类型的命令 EXISTS key 判断一个键是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4 TYPE key 返回某个key元素的数据类型 ( none:...

    通用redis命令【重点】

    ### 通用Redis命令详解 #### 一、Redis链表(List) **Redis链表**作为Redis提供的数据结构之一,在实现上采用双向链表的形式。这种结构不仅支持链表头部及尾部的操作,还允许在O(1)的时间复杂度内完成这些操作。...

    redis命令大全

    ### Redis命令大全详解 #### 一、Keys命令 Redis提供了丰富的键管理命令,这些命令能够帮助用户有效地管理和操作键。 **1. DEL key** - **功能**: 删除已存在的键。 - **示例**: `DEL mykey` 如果键 `mykey` 孌在...

    第3章 Redis命令.pdf

    "Redis 命令详解" Redis 是一个开源的、基于内存的数据结构存储系统,可以用作数据库、缓存和消息队列等。Redis 的命令可以分为三大类:基础命令、Key 操作命令和 Value 操作命令。 1. 基础命令 Redis 的基础命令...

    redis命令参考中文版

    这份"redis命令参考中文版"提供了全面的Redis命令详解,对于理解和使用Redis至关重要。以下将详细介绍其中的关键知识点。 1. 数据类型: Redis支持五种基本数据类型:字符串(Strings)、哈希(Hashes)、列表(Lists)...

    Redis命令参考手册完整版.txt

    ### Redis命令参考手册知识点概述 #### 一、DEL 命令详解 - **命令格式**:`DEL key [key ...]` - **功能描述**: - 用于删除一个或多个给定的键。 - 如果键不存在,则不会有任何错误提示,而是简单地忽略这些键...

    Redis使用教程,详解

    Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...

    redis基本命令.zip

    `文档.pdf` 和 `产品说明.zip` 可能包含了更详细的 Redis 命令详解、使用示例和最佳实践,建议仔细阅读以获取更全面的知识。 了解并熟练运用这些基础命令,将有助于你更好地利用 Redis 解决实际问题,例如缓存、...

    redis命令实践 redis命令实践

    ### Redis命令实践详解 #### 一、Redis简介与特点 Redis是一种开源的内存中的数据结构存储系统,可以作为数据库、缓存或者消息中间件来使用。由于其高速的数据读写性能,广泛应用于需要快速访问数据的场景。Redis...

    Redis配置详解.pdf

    Redis 配置详解 Redis 是一个开源的、基于内存的数据结构存储系统,常用于数据库、缓存、消息队列等场景。然而,正确地配置 Redis 是非常重要的,否则可能会导致性能下降、数据丢失等问题。本文将详细讲解 Redis ...

    redis命令实践redis命令实践redis命令实践.txt

    ### Redis命令实践详解 #### 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储系统,支持多种数据结构如字符串、哈希表、列表、集合及有序集合等。它最大的特点是将数据存储在内存...

    redis使用详解

    在直接使用Redis源码进行交互时,你需要创建一个Socket连接到Redis服务器,然后发送命令(如GET、SET、INCR等)并接收响应。这涉及到网络编程和序列化/反序列化的知识,确保正确地发送和解析Redis协议格式。 接下来...

    redis命令实践 内容详解

    redis命令实践 ## 命令 * Cluster - 集群 * Connection - 连接 * [Geo - 地理位置](commands/Geo/README.md) * 增加 * [GEOADD - 添加/修改地理位置坐标](commands/Geo/geoadd.md) * 删除 * GEOREM(ZREM) - ...

    Redis常用命令、Redis高级命令、Redis命令、redis命令实践

    ### Redis 命令实践详解 #### 一、基本命令 Redis 提供了一系列的基本命令来操作键值对数据。这些命令简单易用,是 Redis 的基础功能。 ##### SET **命令格式**: `SET key value` - **作用**: 设置键 `key` 的...

    redis命令实践详解.zip

    本实践详解将深入探讨Redis中的核心命令及其在实际应用中的使用方法。 首先,我们来了解一下Redis的基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据...

    redis 使用详解

    因为redis 本事的类库 没有函数说明,使用起来很是...只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这些方法。 函数使用详解 函数说明 事物处理

    redis-cheatsheet-v1

    #### 常用Redis命令详解 1. **存在性检查:`exists key`** - 用途:测试指定的键是否存在于数据库中。 - 返回:如果键存在返回1,不存在则返回0。 2. **删除键:`del key1 key2 ... keyN`** - 用途:移除指定的...

    redis部署文档

    #### 四、Redis命令详解 - `redis-benchmark`:用于测试Redis在特定系统上的性能,评估读写速度、延迟等关键指标。 - `ping`:测试Redis服务器是否响应,返回`PONG`表示正常。 - `keys *`:显示所有键名,注意在...

    redis实战详解.docx

    Redis实战详解 Redis是一个开源的、先进的key-value存储系统,用于构建高性能、可扩展的Web应用程序解决方案。Redis官方网站是http://www.redis.io/。Redis有三个主要特点:首先,Redis是一个完全在内存中保存数据...

Global site tag (gtag.js) - Google Analytics