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

智能推荐

(附源码)计算机毕业设计SSM餐厅订餐系统_数据库网上订餐系统用例图-程序员宅基地

文章浏览阅读1.1k次。毕设帮助,指导,本源码分享,调试部署(见文末)_数据库网上订餐系统用例图

Cannot invoke “java.util.List.add(Object)“-程序员宅基地

文章浏览阅读1.5w次,点赞8次,收藏6次。Cannot invoke “java.util.List.add(Object)”背景想要将一组动态的字符串加入数组,实现内存中处理字符串组的功能。import java.util.List;...private List jarList;...jarList.add(file);...参照URL:https://docs.oracle.com/javase/6/docs/api/java/util/List.html报错Cannot invoke "java.util.List._cannot invoke

LayUI上传图片-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏11次。layui现学现用一段时间发现还挺好用的。对一些不复杂的功能来说还算是方便。记录一下上传图片方式,layui集成了图片上传及预览的方式。看看效果图前端HTML代码,用于展示上传图片按钮及预览的位置; 还带进度条哦... <div class="layui-upload" style="margin-left: 110px;margin-bottom: 30px;"> <button type="button" class="layui-.._layui上传图片

java使用poi工具读取word文档并将数据存储到数据库中_java读取work文件将数据存入数据库-程序员宅基地

文章浏览阅读8.4k次,点赞10次,收藏59次。因为是项目收尾阶段,需要帮客户录入数据,产品小姐姐发过来的是一个word文档,以前呐,都是解析excel文档然后保存到数据库,这次来个新花样是word文档。????只好发挥我一年多面向百度编程的经验一顿查,踩了好多坑最后确定了还是使用Apache poi工具,咱程序员呐,可以当时写不出来但是一定得会面向百度编程????????。从网上找了一些POI工具介绍 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个w_java读取work文件将数据存入数据库

Java面试题:TCP三次握手如果失败会发生什么?_tcp三次握手第三次握手失败会有什么后果-程序员宅基地

文章浏览阅读3.4k次,点赞4次,收藏15次。正常情况下会发生TCP三次握手,如果三次握手其中某次失败会怎么样呢?第一次握手:客户端发送失败,客户端、服务器端都不会申请资源。第二次握手:服务器端回应客户端传输失败,客户端不会申请资源,服务器端申请了资源,但收不到客户端第三次握手时发送的请求,过一段时间释放资源。第三次握手:客户端回应服务器端传输失败,服务器端没有收到客户端回应,服务器端会多次发送回应给客户端,如果还是没有收到客户端的客户端回应,则释放资源,服务器端会发送RTS报文并主动关闭防止syn洪泛攻击。syn洪泛攻击.._tcp三次握手第三次握手失败会有什么后果

详解HTML中的window对象和document对象_html window.-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏6次。Window -- 代表浏览器中一个打开的窗口:  window //窗口自身  window.self //引用本窗户window=window.self  window.name //为窗口命名  window.defaultStatus //设定窗户状态栏信息  window.location //URL地址,配备布置这个属性可以打开新的页面对象属性对象方法  w..._html window.

随便推点

Linux 截取日志-程序员宅基地

文章浏览阅读746次。Linux 关于日志的截取_linux 截取日志

PHP-laravel框架一1_php laravel框架-程序员宅基地

文章浏览阅读8.9k次,点赞13次,收藏62次。_php laravel框架

request.getParameter讲解-程序员宅基地

文章浏览阅读6.7k次。JavaWeb getParameter代码片段总结一下:request解控中四个非常重要的方法getParameterMap();getParameterNames();getParameterValues(“name”)getParameter(“name”)下面是四个方法的例子package com.xy.test.servlet;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpSe_request.getparameter

KerberosToken_kerberos_token-程序员宅基地

文章浏览阅读1.3k次。BinarySecurityToken---KerberosToken在WS-Security规范出现之前,针对Web Service或者其他的分布式技术并不是没有安全协议来保证它们的安全。只是这些协议一旦跨越了企业边界往往会受到防火墙的影响,而不再起作用。在WS-Security中,并没有抛弃这些现有的协议,而是将这些Binary的Security Token通过Encoding的方式集成到XM_kerberos_token

Cmake 内置变量-程序员宅基地

文章浏览阅读4.6k次。2019 May 31 cmake Cmake 内置变量 信息变量 CMAKE_SYSTEM 系统名称,例如 Linux-2.6.22、FreeBSD-5.4-RELEASE、Windows 5.1 CAMKE_SYSTEM_NAME 系统名称,如 Linux、FreeBSD、Windows CMAKE_SYSTEM_VERSION 系统版本,如 2.6.22 CMAKE_SYS..._cmake_system_processor是内置的嘛

“MATLAB拒绝访问”问题的解决方法_matlab写入出错拒绝访问-程序员宅基地

文章浏览阅读1.2w次。MATLAB拒绝访问问题的解决方法参考https://www.ilovematlab.cn/thread-46789-1-1.html中的解决方案,“安装MATLAB的时候会涉及到很多的脚本文件,为安全起见,杀毒软件就会限制一些脚本文件的运行,也就会限制此些文件的访问!”电脑上没有其他的杀毒软件,但是有自带的defender。解决方案:病毒和威胁防护设置–>文件夹限制访问->..._matlab写入出错拒绝访问

推荐文章

热门文章

相关标签