Redis数据结构_redis取值fet list-程序员宅基地

技术标签: Linux  

  • redis是一种高级的key-value数据库存储系统 其中value值支持物种数据类型 ,key的数据类型一般都是String

    • 字符串类型:String
    • 散列类型:hash
    • 列表类型:list
    • 集合类型:set
    • 有序集合类型:sorted set
  • 对于redis的key值,如果定义的名称过长,查询效率就会降低,所以一般是按照规范命名就可以了。

  • 命令

    • ping 就是连接是否成功 显示PONG就表示连接成功

    • redis默认会在空间之中生成16个数据库,数据库编号以此从0~15,默认使用的是 0 号数据库select 可以选择数据库 select 编号 写那个就使用哪个数据库

    • 加数据 set key value

    • 根据key获得数据 get key

    • 显示所有的key使用 keys * 表示查询所有的 key 值

    • keys a? 表示查询开头为a长度为2的key值。

    • 清空所有数据 flushall

    • 删除单个key值 del key名称

    • 删除多个 del key1 key2 …

    • 校验key值是否存在 exists key 返回 1 表示存在 返回 0 表示不存在

    • 给key值进行重命名 rename 旧key名称 新key名称

    • 给key值设置过期时间(秒) expire key 时间 过了这个时间,就这个key就不存在了。

    • 查看key值还有多久过期 ttl key值 如果改key值存在显示剩余时间,没有设置过期时间,就显示-1,如果已经超时,删除了key值,显示-2。

    • 查看当前key的数据类型 type key 返回值 就是上面写到的五种数据类型

String类型

是redis数据库之中最基础最常用的数据类型。并且在redis中是二进制安全的

该字符串类型可以接收任何数据类型,在Redis中字符类型的value值最多可以容纳的数据长度为512M

  • 设置键值对 set key value
  • 设置多个键值对 mset key1 value1 key2 value2
  • 通过key值获取value值,get key 返回值,不存在就返回nil
  • 删除key delete key
  • 先获取key值,再设置key值 getset key value
  • 让key对应的value值增加相应的数字, incr key 默认增加1
  • 让key对应的value值减少相应的数字,decr key 默认减少1
  • key的value值增加多个值 incrby key 增加的数字
  • key的value值减少多个值 decrby key 增加的数字
  • 在key对应的value值后面追加信息, append key value 如果不存在就直接新建key值并赋值

Hash类型(map结构)

又称之为散列类型,可以看做是String ,key是String value是一个map容器(key-value),所以非常适合存储值对象(javaBean)对象的一些信息。

就比如说一个人的信息, username age address password 可以使用hash类型进行存储,每一个hash可以存储42亿多个的键值对信息,

  • 赋值

    • hset key field value 给指定的key设定field/value 键值对值 一次设置一个
    • hmset key field1 value1 field2 value 2 给指定的key设置多个field/value键值对
  • 取值

    • hget key field 获取指定key中的field对应的value值
    • hmfet key field1 field2 获取指定key中多个field的value值
    • hgetall key 获取指定key中所有的 field/value值
  • 删除

    • hdel key field1 field2… 删除指定key中指定field对应的value值
    • del key 删除整个key对应的内容
  • 增加

    • hincrby key field 增加的数值 就好像给年龄增加多少
    • hexists field 判断指定key中的field是否存在
    • hlen key 看key中所有的field数量
    • hkeys key 获取所有的field值
    • hvalues key 获取key中所有的value值

List类型

在Redis之中,List类型是按照插入顺序排序的字符串链表,和数据结构之中的普通列表一样,我们在头部(left)和尾部(right)添加新元素,如果在插入的时候如果改建不存在,Redis将为该键创建一个性的链表,相反,如果链表中所有元素均被移除,那么该键也将会东数据库中删除 Listj集合可以包含最大元素是42亿多个

从元素插入和删除的效率来看,如果我们实在链表的两端插入和删除,效率恒奥,从中间效率很低

  • 两端添加

    • lpush key vaslue1 value2 value3… 通过指定的key存放多个value值,在list的头部插入所有的value值,如果该key不存在,该命令在插入之前先插入之前创建一个与key关联的空链表,之后再把所有的value值在该来年表的头部一次插入,如果插入成功,返回元素个数

    • rpush key value1 value2 value3 … 通过指定的key存放多个value值,在list的尾部添加元素

    • Inpushx key value 当key存在的时候,在指定的key所关联的头部插入value值

    • roushx key value 在List尾部添加元素

    • 查看列表

      • lrange key start end 获取链表中从start到end的元素的值 start、end可以为负数,如果为-1表示链表尾部的元素,-2则表示倒数第二个 -3倒数第三个
    • 两端弹出

      • lpop key 返回并弹出指定key关联的链表中的第一个元素,即头部元素
      • rpop key 从尾部弹出元素
    • llen key 返回指定的key关联的链表中的元素的个数

    • linsert key before | after pivot value 在pivot元素的前或者后插入value值

Set类型

在Redis中,我们可以把set类型理解成没有排序的字符集合

和List类型一样,我们也可以在该类型的的数据值上进行添加、删除或者判断某一元素是否存在等操作

Set可包含的最大元素数是42亿多个

和List类型不一样的是,Set集合中不允许出现重复的元素

Set集合类型还可以在服务器端进行聚合计算操作,如 unions、intersection和differences

  • sadd key value1 value2 value3… 向set中添加数据,如果value值重复,则不会二次添加
  • smembers key 获取key中所有的成员
  • srem key member1 member2…删除set中指定的成员
  • sismember key member 判断参数中指定的成员是否在该set中存在,1表示存在,0表示不存在
  • scard key 获取key中成员的数量
  • srandmember key count 随机获取set中的一个成员 随机获取count个成员
  • 和集合相关
    • sdiff key1 key2 返回key1与key2中相差的成员 并且和key的顺序有关 返回的是差集
    • sdiffstore destination key1 key2 将key1、key2相差的成员存储在destination中
    • sinterstore destination key1 key2 将返回的交集存储在destination中
    • sunion key1 key2 返回并集
    • sunionstore destination key1 key2 将并集存储在destination中

sortedset类型

sortedset和set类型几乎一样,都是字符串的集合,都不允许出现重复的成员在同一个set中,区别在于

sortedset中每一个成员都会有一个分数(score)与之相关,

Redis中正是通过这个分数来为集合中每个成员进行从小到大排序

虽然sortedset中的成员必须是唯一的 ,但是分数score却是可以重复的

在sortedset集合中添加删除或者修改一个成员时速度较快

由于sortedset中的成员在集合中的位置是有序的,因此即便是访问位于集合中间的元素效率也是非常高的

  • zadd key score1 member1 score2 member2 score3 member3…将所有的成员以及该成员的分数存放到sortedset集合中
  • zscore key member 返回执行成员中的分数
  • zcard key 获取集合中的成员数量
  • zrem key member[member…] 移除集合中指定的成员,可以删除多个成员
  • zrange key start end [withscores] 获取集合中脚标为start end的成员 [withscores] 参数返回成员包含的分数
  • zrevrange key start end [withscores] 按照分数从大到小的顺序返回索引从start end中间的元素 ,[withscores] 参数返回成员包含的分数
  • 删除元素
    • zremrangebyrank key start end 按照排名顺序删除从后到前的元素
    • zremrangebyscore key start end 按照分数从小到大依次删除
  • zrangebyscore key min max [withscores] [limit offset count] 返回分数在[min,max]的成员并且按照分数从小到大的进行排序 [withscores] 显示分数 [limit offset count] offset 起始值 从脚标为offset的元素开始并返回count个成员信息
  • zcount key min max 获取分数在[min,max]中间的成员个数
  • zincrby key increment member 设置指定成员的增加的分数
  • zrank key member 返回成员在集合中的排名 从小到大排序 索引从0开始的
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52296931/article/details/115185264

智能推荐

Linux服务器Input/output error错误_linux 写入文件到挂载的nas下提示failed to close...input/output-程序员宅基地

文章浏览阅读1.6w次。报错系统Centos报错提示Input/output error检查服务器机器中多硬盘是否其中有一块硬盘坏掉了。第二种可能:RAID阵列可能有问题。。。_linux 写入文件到挂载的nas下提示failed to close...input/output error

DevExpress SearchControl搜索框中的问题提示_devexpress searchcontrol1-程序员宅基地

文章浏览阅读4k次。SearchControl搜索框中的问题提示,代码为: this.searchControl1.Properties.NullValuePrompt = "请输入搜索关键字";_devexpress searchcontrol1

离线安装htop工具_htop 离线-程序员宅基地

文章浏览阅读4.8k次。htop众所周知是是一款强大的是Linux系统中的一个互动的进程查看器(作为top的替代品),一个文本模式的应用程序(在控制台或者X终端中),一般情况下一句yum install htop就能轻松安装,但是很多时候我们会遇到无法连接外网的情况。_htop 离线

Task1 随机事件与随机变量_如何在task里随机一个变量-程序员宅基地

文章浏览阅读214次。随机事件与随机变量基本概念随机现象: 现实生活中,一个动作或一件事情,在一定条件下,所得的结果不能预先完全确定,而只能确定是多种可能结果中的一种。样本空间:一个试验所有可能的集合。样本点:试验的每一种可能的结果。随机事件:样本空间满足一定条件的子集。概率定义:每个事件AAA,定义一个实数P(A)P(A)P(A)与之对应,若函数。概率公理:非负性:0<P(A)<=10<P(A)<=10<P(A)<=1;可加性:若事件A1,A2,A3,...A_1,A__如何在task里随机一个变量

开机提示:error:no such partition grub rescue>-程序员宅基地

文章浏览阅读273次。原来电脑装的是win7和ubuntu双系统,后来配置java环境的时候把ubuntu给整残了,就在win7下把ubuntu的分区给删除了,没想到重启的时候直接就显示error:no such partition grub rescue> 具体原因是什么网上说的都很清楚(删除系统后,grub的配置文件没了,而mbr没有改回来,所以出现这种状况),解决方案也有几个,总..._开机显示error:nosuch partition entering rescue mode...

【数据分析】基于RFM模型的线上零售中的客户细分(二):RFM模型实战_零售数据模型有哪些-程序员宅基地

文章浏览阅读3.9k次,点赞14次,收藏59次。这篇博客将会结合具体的商业实例介绍同期群分析、RFM模型,并利用K-Means聚类算法在RFM模型上找到合适的细分集群。_零售数据模型有哪些

随便推点

ORA-39143: 转储文件 "F:\ora10G_expdp\ic_price_fromlufang.dmp" 可能是原始的导出转 储文件...-程序员宅基地

文章浏览阅读441次。连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsORA-39001: 参数值无效ORA-39000: 转储文件说明错误ORA-39143: 转储文件 "F:\ora10G_expdp\ic_pri..._ora39143

8.4 输入某班学生某门课的成绩,(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数-程序员宅基地

文章浏览阅读3.4w次,点赞16次,收藏28次。#includemain(){ int n,a[40],i,count=0; printf("请输入学生人数:"); scanf("%d",&n); printf("请输入各学生成绩:\n"); for(i=0;i

JAVASE笔记回顾-程序员宅基地

文章浏览阅读391次。第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ,YY,扫雷,CS/F(4)软件开发就是用开发工具和计算机语言做出软件(5)计算机语言人与计算机的交流方式(6)人机交互A:图像界面方便,简单,直观。B:DOS 窗口方式要有控制台, 要记住很多的命令,..._cuser.getchinese().equals("null")

将 PDF 转换为矢量图 emf_pdf转emf-程序员宅基地

文章浏览阅读2w次,点赞15次,收藏43次。此篇博客介绍了一种将PDF转换为矢量图emf、编辑emf的方法(需要Adobe Acrobat)_pdf转emf

各个 Android Gradle 插件版本所需的 Gradle 版本_gradle distributionurl 有那些版本-程序员宅基地

文章浏览阅读1.1k次。下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。要获得最佳性能,您应该使用 Gradle 和插件这两者的最新版本。插件版本 所需的 Gradle 版本 1.0.0 - 1.1.3 2.2.1 - 2.3 1.2.0 - 1.3.1 2.2.1 - 2.9 1.5.0 2.2.1 - 2.13 2.0.0 - 2.1...._gradle distributionurl 有那些版本

esp32 mqtt协议上报 dht11温湿度数据到onenet 指令下发控制开关灯_esp32连接onenet控制灯开关-程序员宅基地

文章浏览阅读1.9k次。一直没有时间玩esp32开发板,网上说这款板子性能强悍,双cpu,支持蓝牙.....等等,优点就不说了,自行百度吧。抽了一个星期时间,用esp32做了一款小项目,和大多数物联网项目一样,具有基本的数据上报,指令下发功能。如下图,我用它来开关灯实现步骤:1、先在arduino上装好esp32的开发环境,这个网上已经有很多了,我就不再写了。2、当然是写代码,下载mqtt类库。3、我因为太穷,所以就用onenet来当服务器吧,那就去onenet开个户,建好产品、设备。4、写上位_esp32连接onenet控制灯开关

推荐文章

热门文章

相关标签