Redis学习---02

news2024/11/28 14:37:20

一、Redis基础知识

(1)redis默认有16个数据库;默认使用的是第0个数据库;切换数据库:

select index

获取数据库中的值大小:dbsize

(2):查看所有的key

(3):清空当前数据库:flushdb

 (4)清空所有的数据库:flushall

 (5)默认端口号:6379;

Redis的速度与服务器的配置和网络带宽有关。

(6)redis是单线程的,redis是将所有的数据都放入到内存中,所以操作是最快的,多线程的上下文切换是比较耗费时间的,而内存并没有上下文的切换。Redis的多次的读写都是在一个CPU上的;所以比快。

二、Redis的五大数据类型

查看key的命令:

  1. keys  *  :得到所有的key
  2. exist key 
  3. move key 1 :移除key
  4. get key 
  5. set key xxx
  6. expire name xxx :设置过期时间;
  7. ttl  key :查看key的剩余时间
  8. type key :查看key的类型

(1) String

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

Redis 的 SET 和 GET 命令

1) 移除元素:move  xxx 1

2) 获取长度: strlen key 

3)增加长度:append key value 

4) i++和 i--:自增1和自减1的操作: incr key   /  decr key 

5) 指定减少的长度 :decrby key decrement

 6) 截取字串:getrange key  start  end;

7) 存在时设置:设置过期时间

8) 不存在时设置:

 9) 同时批量设置值和批量获得值(当key不存在的时候获取):

 10) 设置一个对象User   user:{id} :{filed}

  11) 先get后set: getset name xxx 如果第一次get不存在,则就进行创建;

(2) List

 Redis列表是简单的字符串列表,默认按照(从左开始插入数据)插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

List实际上是一个链表:List可以作为消息队列,或者栈;

1)从左边插入一个值:L    LPUSH

 2)从右边插入一个值:R    RPUSH

3) 从左边移除一个值  LPOP

4) 从右边删除一个值 RPOP

 5)根据下标获取值:LINDEX

6)返回列表的长度:LLEN

7):移除指定个数的元素:lrem  key count value

8):保留一段区间的元素:TRIM  key start stop  ;而且会修改原来的List

 9):LSET====>根据index设置一个key:前提是set要存在;如果存在则更新index下标的值

 10):LINSERT===>指定位置插入元素:

(3) Set(无序的集合)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

1) 添加元素:

2) 获取set集合元素个数:

3) 获取set中所有的元素的值:

4) 移除set集合中的指定元素:

 5) 移除set集合中随机元素:

6) 获取一个随机元素:

7)  将元素从setA 移动到 setB 

8) 返回差集:

9) 返回交集:

 10) 返回并集:

 11) 返回差集然后存储到新的set中:key1 和key2是set

12) 返回交集然后存储到新的set中:

13) 返回并集然后存储到新的set中:

(4)Hash

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Hash更适合对象的存储;

1)hash中添加元素

2)hash中得到元素:

3)hash中同时设置多个字段

4)hash中同时得到多个字段:

5)得到所有的key和 value

6)hash中得到所有的key

7)hash中得到所有的values:

8)hash中删除指定的key字段

9)得到hash的长度

10) 判断hash中指定的字段是否存在:

11) hash中字段进行加减:

12) hash中字段如果不存在,进行设置

(5) Zset(有序集合)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

排行榜应用的实现,可以使用Zset。

1)  添加一个元素 

2) 移除一个元素或者多个元素:

3)  获取集合中成员的个数:

4) 计算指定区间的个数:[start,stop]

5) 通过索引区间返回有序集合指定区间的成员:

6) 返回索引:

7) 根据set中的 区间统计数量

三、三种特殊的数据类型:

(1) geospatial 地理位置;距离计算

Redis GEO 操作方法有:(先经度,后纬度)

GEO的底层就是Zset,所以Zset的命令也可以在GEO中使用。

1) geoadd:添加地理位置的坐标。(add)

2) geopos:获取地理位置的坐标。(position)

3) geodist:计算两个位置之间的距离(m/km/ft/mi)。(distance)

geodist参数:

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。

4) georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

georadius参数说明:

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT 限定返回的记录数。
  • ASC: 查找结果根据距离从近到远排序。
  • DESC: 查找结果根据从远到近排序。

5) georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。在这个范围内容的所有地理位置信息,返回一个集合。

6) geohash:返回一个或多个位置对象的 geohash 值。(了解)

添加一个地理位置

 查询地理微信:

 计算距离:

(2) hyperloglog 基数统计(不重复的元素)本质是一个Set

什么是基数:

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

命令描述
PFADD添加指定元素到 HyperLogLog 中。
PFCOUNT返回给定 HyperLogLog 的基数估算值。
PFMERGE将多个 HyperLogLog 合并为一个 HyperLogLog

(3) bitmap 位图场景

位存储:0 或者1 

一般两个状态的情况,可以使用bitmaps

命令

设置:setbit key index value

得到:getbit key 

统计:bitcount  key 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LCD1602液晶显示模块

1.认识LCD1602 1、概述: LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 1602,32个 字符(16列两行)。是我们接触引脚最多的模块。LCD1602我们的非标准协议(标准协议有IIC、IIS、SPI&…

利用暴力攻击破解登陆密码

长久以来,入侵远程计算机系统的工具和技术并没有发生翻天覆地的变化。例如,在许多情况下,普通用户只要知道了相关密码,就能立刻变身为管理员。虽然这些情形听起来不够曲折,但在大多数情况下,暴力攻击是通过…

Kubernetes第3天

第五章 Pod详解 本章节将详细介绍Pod资源的各种配置(yaml)和原理。 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器,数量可多可少 Pause容器,这是每个…

JavaScript实现水印效果

效果 实现思路 利用canvas绘制出文字将canvas作为遮罩层背景图, 将背景x轴和y轴重复 实现步骤 动态生成canvas并画出文字 const canvas document.createElement("canvas"); canvas.width len * fontSize; // canvas宽度, 目前是根据文字长度和大小来调整的, 自…

Postman调试依赖登录接口的3种方法

在接口测试种, 我们经常会遇到有些接口登录后才能访问.我们在使用Postman调试这种接口时一般有3种方法: 1.依次请求 如果有登录接口的文档,或者通过抓包比较容易抓出登录请求的参数和格式,可以先使用Postman请求一下登录接口,这时Cookies会存到本地(可以通过Postman Cookies管理…

JVM学习(十一):对象的实例化内存布局与访问定位

目录 一、对象的实例化 1.1 创建对象的方式 1.2 创建对象的步骤 二、对象的内存布局 2.1 对象头 2.1.1 运行时元数据(Mark Word) 2.1.2 典型指针 2.2 实例数据(Instance Data) 2.3 对齐填充(Padding&#…

一个奇葩的网络问题,把技术砖家“搞蒙了“

问题现象 客户反馈有一个server端S, 两个client端C1, C2, S的iptables规则对C1, C2都是放通的,但是C2无法连接上S,客户很着急,催我们尽快解决。 这里解释一下,iptables规则是防火墙规则,是linux系统实现防…

【C++刷题集】-- day1

目录 选择题 单选 编程题 组队竞赛⭐ 【题目解析】 【解题思路】(排序 贪心) 删除公共字符⭐ 【题目解析】 【解题思路】(哈希映射) 选择题 单选 1、 以下for循环的执行次数是 ( ) for(int x 0, y 0; (y 123) && (x < 4); x); 是无限循环 循环次数不…

Leetcode刷题之有效的括号

我们的内心和心智&#xff0c;是决定我们未来命运的最强劲的力量。 -- 奥普拉温弗瑞目录 &#x1f341;一.有效的括号 &#x1f34d;1.使用栈实现 &#x1f352;2.完整代码&#xff1a; 题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0…

Sonar Qube代码质量检测工具安装及基本使用

Sonar介绍 Sonar Qube是一个开源的代码分析平台&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描&#xff0c;比如Maven&#xff0c;…

算法套路十七——买卖股票问题:状态机 DP

算法套路十七——买卖股票问题&#xff1a;状态机 DP 状态机DP是一种将动态规划方法应用于有限状态机&#xff08;Finite State Machine&#xff09;的问题求解方法。 状态机DP&#xff08;State Machine DP&#xff09;是一种动态规划的思想&#xff0c;它通常用于解决一些具…

行动元宣布推出面向精密制造领域的智能运动控制解决方案

近日&#xff0c;AI 工业工程化平台行动元宣布推出面向精密制造领域的智能运动控制解决方案。该方案融合大数据模型、数字孪生以及人工智能技术&#xff0c;通过数字化建模、适配、调试等过程&#xff0c;极大提升终端设备集成方案的设计、选型与测试效率&#xff0c;并通过算法…

你不学,我不学,谁来网安,谁来保卫国家!

一、为什么选择网络安全&#xff1f; 这几年随着我国**《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》**等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前…

PCL点云库(6) — Filters模块空间裁剪器类

目录 6.1 3D包围盒裁剪器Class BoxClipper3D< PointT > 6.2 平面裁剪器Class pcl::PlaneClipper3D< PointT > 6.3 立方体过滤Class pcl::CropBox< PointT > 6.4 曲面或多边形过滤 Class pcl::CropHull< PointT > 6.5 完整代码 6.1 3D包围盒裁剪器…

C语言基础:static关键字

本文结合工作经验&#xff0c;研究C语言中static关键字的用法。 文章目录 1 static关键字概念2 用法与使用场景2.1 修饰全局变量2.1.1 代码示例2.1.2 使用场景 2.2 修饰函数2.2.1 代码示例2.2.2 使用场景 2.3 修饰局部变量2.3.1 代码示例2.4.2 使用场景 3 总结 1 static关键字…

第13章:存储过程和存储函数

一、存储过程 1.1理解 含义&#xff1a; 存储过程stored procedure&#xff0c;思想是一组经过预先编译的SQL语句的封装。 存储过程预先存储在MySQL服务器上&#xff0c;需要执行的时候&#xff0c;客户端向服务器端发出调用存储过程的命令&#xff0c;服务器段把这组SQL执…

当我和ChatGPT-4聊完后,我觉得一切可能已经来不及了

飞机上有wifi&#xff0c;了然无味&#xff0c;在万米高空&#xff0c;和ChatGPT-4开始了一场坦诚的沟通&#xff0c;它全程都表现出高情商&#xff0c;以及不断尽量安抚我的情绪&#xff0c;而这&#xff0c;恰恰令我脊背发凉。 部分文字截取 ZM&#xff1a;我能不能理解每次对…

k8s学习-CKS真题-ImagePolicyWebhook容器镜像扫描

目录 题目环境搭建imagePolicyWebhook搭建 解题任务二任务三任务一检查 模拟考题参考 题目 Context cluster上设置了容器镜像扫描器&#xff0c;但尚未完全集成到 cluster 的配置中。 完成后&#xff0c;容器镜像扫描器应扫描并拒绝易受攻击的镜像的使用。 Task 注意&#xff…

5.17 ARM 作业

1. 2.用for循环实现1~100之间的和 13BA 3.xmind

可以找工作的C端的低代码产品,终于让我找到了

目录 写在前面 低代码平台 平台怎么选 各平台区别 为什么选它 写在前面 大家都知道低代码这个叫法是从B端叫起来的&#xff0c;也就是说不管是业务人员还是开发人员&#xff0c;都是企业内部使用。那么有没有C端的&#xff0c;且免费使用的低代码产品呢&#xff1f; 低代码…