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

智能推荐

String转Map_string 转map-程序员宅基地

文章浏览阅读8.3k次。前提:String为Json类型字符串maven <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>转换 _string 转map

SylixOS中断系统分析_sylixos 中断-程序员宅基地

文章浏览阅读803次,点赞2次,收藏8次。这里写目录标题1. 适用范围2. 原理概述2.1 中断控制器2.2 异常与模式2.3 分组寄存器2.4 中断向量表1. 适用范围本文将会基于ARM架构介绍SylixOS的中断系统,详细的将中断过程进行了分析,对于想了解SylixOS中断有一定帮助。2. 原理概述中断就是硬件或软件产生的一个信号,处理器会根据当前中断的状态,中止正常指令执行,转而响应中断请求。中断是嵌入式系统中一个非常重要的概念,深入了解一个架构或者系统,中断是必须要理解的核心概念之一。ARM架构中外部中断分为普通中断(IRQ)和快_sylixos 中断

非常好用又酷的终端工具 --Tabby-程序员宅基地

文章浏览阅读4.2w次,点赞26次,收藏131次。文章目录Tabby安装包SSH 连接SFTP 传输工具设置TabbyTabby 是一名老外在 Github 开源的终端连接的工具,至今已经累积 20K+ star。Tabby 的功能特性大概有:支持多平台,Windows、MacOS(Intel 芯片/M1 芯片)、Linux 都有对应的安装包的;自带 SFTP 功能,能够与 Linux 系统传输文件;炫酷的终端页面,简单易用,以及各种插件支持等安装包github地址:https://github.com/Eugeny/tabby/re._tabby

尚硅谷-康师傅-MySQL详细笔记(1-9章)_尚硅谷康师傅的mysql里面的qtguigudb文件-程序员宅基地

文章浏览阅读6.8k次,点赞32次,收藏135次。很详细的mysql系列笔记,可以作为备查资料,放心食用!_尚硅谷康师傅的mysql里面的qtguigudb文件

激光导航AGV-激光雷达安装要求_agv小车的激光雷达位置-程序员宅基地

文章浏览阅读4.8k次,点赞2次,收藏21次。首先激光雷达分测量用激光雷达和避障用激光雷达、或两用激光雷达。1、首先根据雷达抗震动和冲击能力,确定是否需要减震支架。2、如果不需要减震支架,可以使用安装耳固定或者雷达上面的其它固定螺丝孔。3、避障雷达要求水平朝上倾斜5度左右,以解决高反射物体的探测。4、测量雷达要求安装平面尽可能与地面平行,用于提高普通定位精度,因为如果有倾斜角度的话,雷达在不同位置探测出来的轮廓会有较大误差,最终影响定..._agv小车的激光雷达位置

SVG 拖动以及缩放-程序员宅基地

文章浏览阅读1.1k次。 1:转载 https://blog.csdn.net/qq_25041297/article/details/79172165首先我是需要一个SVG图的缩放和平移,svg图是自己做的,然后里面有自己做的动画以及其他时间,但是前几天客户说要改需求,说需要这个图实现SVG的拖动和缩放,MD,我只是一个后端啊,好吧,后端和前端已经感觉没有区别了。之前做SVG动画的时候,学习了一下s...

随便推点

Python3(22):Centos7使用PyInstaller打包出现OSError: Python library not found_python library not in binary dependencies. doing a-程序员宅基地

文章浏览阅读3.5k次。PyInstaller打包python程序$pyinstaller -Fcasb_data.py 13496 INFO: Python library not in binary dependencies. Doing additional searching... Traceback (most recent call last): File "/usr/local/python3/bin/pyinstaller", line 8, in <module>..._python library not in binary dependencies. doing additional searching... obj

Elman神经网络介绍以及Matlab实现-程序员宅基地

文章浏览阅读6.4w次,点赞87次,收藏431次。Elman神经网络介绍1.特点 Elman神经网络是一种典型的动态递归神经网络,它是在BP网络基本结构的基础上,在隐含层增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特性的能力,增强了网络的全局稳定性,它比前馈型神经网络具有更强的计算能力,还可以用来解决快速寻优问题。 2.结构 Elman神经网络是应用较为广泛的一种典型的反馈型神经网络模型。一般分为四层:输入层..._elman神经网络

Swift 学习_swift playground是什么-程序员宅基地

文章浏览阅读1.1k次。周末闲来无事,接触一下swift, 在Xcode的playground上玩儿swift还很好玩儿的,会一边编写代码一边检查一遍即使显示基础基本类型Int Double Float String Boollet c = 1_000_000_000let d:Int = 1let e:Double = 1.5let f:Float = 2.2let g:String_swift playground是什么

微信小程序直播开发(注册小程序并开通相关接口)_微信直播接口申请-程序员宅基地

文章浏览阅读8.4k次,点赞7次,收藏21次。注册小程序并开通相关接口出于政策和合规的考虑,微信暂时没有放开所有小程序对 &lt;live-pusher&gt; 和 &lt;live-player&gt; 标签的支持:个人账号和企业账号的小程序暂时只开放如下表格中的类目:主类目 子类目 【社交】 直播 【教育】 在线教育 【医疗】 互联网医院,公立医院 【政务民生】 所有二级类目 ..._微信直播接口申请

强悍!Apifox的API接口文档功能_apifox导出接口文档-程序员宅基地

文章浏览阅读5.8k次。使用过Apifox我相信都会被这个软件的细节之处,API接口文档功能强大之处给留下深刻的印象!一个软件工具的使命肯定是要为了使用者的便捷着想,处处的简化使用者的操作让工作更效率,这种才是一种好的工具的表现。..._apifox导出接口文档

BC26通过MQTT协议连接ONENET,AT流程_bc26取消mqtt连接-程序员宅基地

文章浏览阅读5.9k次,点赞8次,收藏71次。onenet平台操作首先登录平台,并进入控制台选择多协议接入点击添加产品,新建一个产品名称、类别根据需要填写,接入协议选择MQTT新建产品成功:点击产品名字,进入产品设置页面,为产品添加设备鉴权信息,为避免冲突,需要填入设备独一无二的ID,推荐填模组IMEI新建设备成功:模组端操作①确认IP地址分配正常  命令为:AT+CGPADDR=1  正常回应为:+CGPADDR: 1,100.103.51.110OK  如果BC26获得了IP地址说明卡和网络肯定_bc26取消mqtt连接

推荐文章

热门文章

相关标签