加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Redis中的数据结构与常用命令,学习Redis从这开始

发布时间:2020-12-16 04:43:48 所属栏目:安全 来源:网络整理
导读:《Redis中的数据结构与常用命令,学习Redis从这开始》要点: 本文介绍了Redis中的数据结构与常用命令,学习Redis从这开始,希望对您有用。如果有疑问,可以联系我们。 对付Redis的介绍这里只写一句:Redis是一种基于内存的高性能非关系型数据库,它以kye-valu

《Redis中的数据结构与常用命令,学习Redis从这开始》要点:
本文介绍了Redis中的数据结构与常用命令,学习Redis从这开始,希望对您有用。如果有疑问,可以联系我们。

对付Redis的介绍这里只写一句:Redis是一种基于内存的高性能非关系型数据库,它以kye-value的形式来存储数据.

5种数据结构

Redis中包括5种数据类型:STRING、LIST、SET、HASH、ZSET.

Redis中的5中数据布局(截图出自《Redis in Action》):

Redis以key-value形式存储数据,此中key与value的关系可分为两种

  • 1对1

    在Redis的STRING数据布局中,一个key对应一个value.

  • 1对*

    Redis中的别的四种数据结构,一个key可以对应多个value.

为了更直观的说明key和value间的关系,下面用几张图(截图来自《Redis in Action》)来描述Redis中的五种数据布局:

STRING布局

Redis中的数据结构与常用命令,学习Redis从这开始

LIST布局

Redis中的数据结构与常用命令,学习Redis从这开始

SET布局

Redis中的数据结构与常用命令,学习Redis从这开始

HASH布局

Redis中的数据结构与常用命令,学习Redis从这开始

ZSET布局

Redis中的数据结构与常用命令,学习Redis从这开始

此中:

SET和ZSET中没有反复元素;

相比SET,ZSET具有排序功效;

ZSET和HASH的value也是键值对情势:ZSET(score,member)、HASH(field,value);

STRING类型中不仅仅是存储字符,也可以存储数值(整数、浮点数);

5种数据布局最终存储的数据类型实际只有两种:字符和数值,Redis能够区分存储的值是字符还是数字;

Redis中常用命令

在redis-cli中对付输入的命令会有智能提示

Redis中的数据结构与常用命令,学习Redis从这开始

命令作用
HELP获取命令的赞助信息,学会help命令很重要
DEL删除key及对应的值
EXPIRE设置键的过期时间,过期的键连同与该键相关的数据都将被删除

help命令:

  • STRING

    Redis对字符串提供了丰富的操作,在Redis中STRING布局用于存储两种类型的数据:

  • 数值(整数、浮点数)

  • 字符串(byte string)

命令作用
SET向指定的key中写入值
GET从指定的key中获取值
INCR将指定key的值加1
DECR将指定key的值减1
INCRBY将指定key的值加上指定的数值
DECRBY将指定key的值减去指定的数值
APPEND向value中追加内容
GETRANGEGETRANGE key-name start end获取指定索引范围(字符串可看作是字符组成的数组)的字符,当start=0且end=-1时获取整个字符串
SETRANGE`设置指定偏移量的字符的值
GETBITGETBIT key-name offset 将字符串看做是二进制形式(bit string),并返回指定偏移量位置处的二进制位的值
SETBIT设置指定偏移量位置处的二进制位的值
BITCOUNT返回字符串中二进制位值为1的二进制位数
BITOP对字符串执行位运算,并将计算成果存储到指定的key中

对于BITCOUNT命令,专门写了一段程序进行验证,效果图如下:

c#代码:

Redis中的数据结构与常用命令,学习Redis从这开始

redis-cli中执行bitcount命令的成果:

Redis中的数据结构与常用命令,学习Redis从这开始

LIST

命令作用
LPUSH将一个或多个值推入列表左端
RPUSH将一个或多个值推入列表右端
LPOP移除并返回列表最左端的值
RPOP移除并返回列表最右端的值
LINDEX根据索引获取LIST中的值
LRANGE获取LIST中索引在指定规模内的值
LTRIM从LIST中删除索引不在指定规模内的值,这里的索引规模是闭区间
  • HASH

Redis中的数据结构与常用命令,学习Redis从这开始

命令作用
HSET向HASH表中添加元素,由上图可以看出HASH结构中存储的值也是一个键值对(field value)
HMSET一次向HASH表中写入多个键值对
HGET获取HASH中存储的值
HMGET一次从HASH中获取多个值
HLEN获取HASH表中存储的元素个数
HDEL删除HASH表中的键值对
HEXISTS判断HASH中是否包括指定field的键值对
HKEYS获取HASH中的所有键(field)
HVALS获取HASH中的所有值
HGETALL获取HASH中的所有键值对
HINCRBY将HASH中的指定value增加指定的数值
  • SET

    SET中没有反复元素,向SET中添加反复的数据只会存储一份.

命令作用
SADD向SET中添加元素
SREM移除SET中的元素
SISMEMBER断定某元素是否存在于SET中
SCARD返回SET中的元素个数
SMEMBERS返回SET中的所有元素
SSCAN通过迭代的方式返回SET中的所有元素
SMOVE将元素从某一集(如果该元素存在当前集合中)合移动到另一集合并返回当前元素

集合间运算

命令作用
SDIFF对SET集合进行补集运算(存在于第一个集合且不存在于第二个集合中的元素)并返回运算成果
SDIFFSTORE对SET集合进行补集运算并将运算成果存储到一个新的SET集合中
SINTER对SET集合进行交集运算并返回运算成果
SINTERSTORE对SET集合进行交集运算并将运算成果存储到一个新的SET集合中
SUNION对SET集合进行并集运算并返回运算成果
SUNIONSTORE对SET集合进行并集运算并将运算成果存储到一个新的SET集合中
  • ZSET

    ZSET和SET一样,没有反复元素,但和SET相比它有排序功能.

命令作用
ZADD向ZSET中添加元素
ZREM移除ZSET中的元素
ZCARD获取ZSET中元素的个数
ZSCORE获取ZSET中元素的score值
ZRANK获取ZSET中元素的索引
ZREMRANGEBYRANK从ZSET中移除指定索引规模内的元素
ZREMRANGEBYSCORE从ZSET中移除指定score规模内的元素
ZCOUNT获取ZSET中score值在指定规模内元素的个数
ZRANGE获取ZSET中索引在指定规模内的元素,ZRANGE key start stop,参数start=0且stop=-1时返回所有元素

集合间运算

命令作用
ZINTERSTORE对ZSET集合进行交集运算并将运算成果存储到一个新的ZSET集合中
ZUNIONSTORE对ZSET集合进行并集运算并将运算成果存储到一个新的ZSET集合中

集合运算对于value值相同的集合元素score值的处理分为三种方式:

  1. 乞降

  2. 取最年夜值

  3. 取最小值

执行ZINTERSTORE命令(ZUNIONSTORE与之相似):

  • 参数destination表现用于存储计算结果的集合的key

  • 参数numkeys表现参与运算的集合数,必选

  • AGGREGATE表现对score的操作方式,默认为SUM

  • 参数WEIGHTS表示权重,该参数比拟复杂:

  • 参数WEIGHTS的个数和numkyes值相等

  • AGGREGATE值为SUM时,对于结果集中的某个value为a的元素B,介入运算的各个集合中value为a的元素的score值会分别和对应的WEIGHTS值相乘然后再将各自相乘结果相加作为结果集中元素B的score值

  • AGGREGATE值为MIN或MAX时,参与运算的各个集合中value为a的元素中score值最小或最大的那个(若有多个,则依照命令行中指定集合的顺序自左向右取第一个符合条件的集合中的元素)和对应的WEIGHTS值相乘得到的值作为结果集中元素B的score值

规则略复杂,本身动手写几遍就会明白了.ZINTERSTORE命令执行效果图:

以下为进行聚拢运算的示意图:

以对score乞降的方式进行交集运算

Redis中的数据结构与常用命令,学习Redis从这开始

以取score中最小值的方式进行并集运算

Redis中的数据结构与常用命令,学习Redis从这开始

以对score乞降的方式进行并集运算

Redis中的数据结构与常用命令,学习Redis从这开始

Sort

对LIST、SET、ZSET三种数据布局中的值进行排序操作,默认是正序排列.

Redis中的数据结构与常用命令,学习Redis从这开始

Publish & Subscribe

宣布/订阅模式

命令作用
PUBLISH向指定的频道发送二进制字符串消息(binary string messages)
SUBSCRIBE订阅指定的频道已接受该频道发送的消息
UNSUBSCRIBE撤消订阅某频道

下图中展示的是使用redis-cli和stackexchange.redis进行的pub/sub测试效果:

Redis中的数据结构与常用命令,学习Redis从这开始

Transcation

命令作用
MULTI表示事务的开始
EXEC执行事务中包括的命令

Redis中事务(调用MULTI表示事务的开始)所包括的命令会被放到一个队列中,当遇到EXEC命令后会不间断的依次执行队列中的命令.

Redis中的数据结构与常用命令,学习Redis从这开始

Redis中的事务和数据库中的事务分歧,它没有回滚操作.

Redis中的事务,若某行命令执行失败不会影响其它命令的执行(下图中第二行命令执行失败,第一、三行胜利执行):

Redis中的数据结构与常用命令,学习Redis从这开始

StackExchange.Redis

StackExchange.Redis驱动是用C#语言写的Redis驱动,它的API在语义上和Redis命令是相似的,在这里列举下驱动中常用的几个类:

  • ConnectionMultiplexer

    表现一组相关的Redis服务器链接,StackExchage.Redis官方建议尽可能复用该对象.

  • IDatabase

    该接口中定义了对5种数据结构进行操作的办法

  • RedisDatabase

    IDatabase的完成类

  • RedisKey

    存储到Redis中的key

  • RedisValue

    存储到Redis中的value,可用于表现STRING、LIST、SET结构中存储的数据

  • HashEntry

    表现一个HASH键值对

  • SortedSetEntry

    表现一个ZSET元素

  • ISubscript

    订阅接口

  • RedisChannel

    表现发布/订阅中的频道名

  • Subscription

    ConnectionMultiplexer中的公有密封类,封装和订阅相关的信息

结语

Redis是一种NoSql数据库,Redis服务器上默认有16个数据库,Redis常被拿来和Memcache做比较,网上有很多这方面的文章,各位看官请自行搜索.本文着重介绍了Redis中的5中数据结构和一些常用的命令,对于第三方驱动则一笔带过,因为在了解了Redis自己之后,可以很快的掌握第三方驱动的使用.

优待业500万阳光待业基金等你拿:

http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300

优待业官网:http://www.ujiuye.com/?wt.bd=fq37300

欢迎参与《Redis中的数据结构与常用命令,学习Redis从这开始》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读