房产信息查询/seo关键词排名点击工具
目录
Redis的数据结构:
Redis命令:
通用命令:(通用指令是部分数据类型的,都可以使用的指令)
KEYS查询命令:
DEL删除命令:
EXISTS判断命令:
EXPIPE有效期设置命令:
TTL查看剩余期限命令:
String类型:
String的3种类型:
String类型的常见命令:
SET插入数据命令:
MSET多重插入命令:
GET获取数据命令:
MGET多重获取命令:
INCR自增命令:
INCRBY指定自增命令:
INCRBYFLOAT指定浮点数自增命令:
SETNX添加String类型键值对命令(前提是key不存在,否则不执行)
SETEX添加Sting类型键值对命令(指定有效期)
Redis的key的格式:
问题:Redis没有类似Mysql的Table的概念,我们该如何区分不同类型的key呢?
key的结构:
Hash类型
为什么需要使用Hash类型呢?
Hash类型的常见命令:
HSET key field value:添加或者修改hash类型的key和fired的值
HGET key field:获取一个hash类型的key的field的值
HMSET:添加多个hash类型的key的field值
HMGET:获取多个hash类型的key的field值
HGETALL:获取一个hash类型的key中所有的field和value
HKEYS:获取一个hash类型的key中的所有的field
HVALS:获取一个hash类型的key中的所有的value
HINCRBY:让一个hash类型key的字段值自增并指定步长
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
参考视频:黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目
Redis的数据结构:
我们能通过官方网站提供的文档来了解我们需要使用的redis数据类型
或者是使用命令help来查看
Redis命令:
通用命令:(通用指令是部分数据类型的,都可以使用的指令)
192.168.1.209:6379> help @generic
KEYS查询命令:
我们能通过help [command]可以查看一个命令的具体用法
192.168.1.209:6379> help KEYSKEYS patternsummary: Find all keys matching the given patternsince: 1.0.0group: generic192.168.1.209:6379>
使用KEYS命令查看所有的key
192.168.1.209:6379> SET name "claylpf"
OK
192.168.1.209:6379> SET id 66
OK
192.168.1.209:6379> KEYS *
1) "id"
2) "name"
192.168.1.209:6379>
例如:
DEL删除命令:
具体用法
192.168.1.209:6379> help DELDEL key [key ...]summary: Delete a keysince: 1.0.0group: generic192.168.1.209:6379>
例如:
192.168.1.209:6379> DEL id
(integer) 1
192.168.1.209:6379> KEYS *
1) "name"
192.168.1.209:6379>
多重删除
192.168.1.209:6379> DEL k1 k2 k3
(integer) 3
192.168.1.209:6379> KEYS *
1) "age"
2) "name"
192.168.1.209:6379>
EXISTS判断命令:
具体用法:
192.168.1.209:6379> help EXISTSEXISTS key [key ...]summary: Determine if a key existssince: 1.0.0group: generic192.168.1.209:6379>
如:
192.168.1.209:6379> KEYS *
1) "age"
2) "name"
192.168.1.209:6379> EXISTS age
(integer) 1
192.168.1.209:6379> EXISTS id
(integer) 0
192.168.1.209:6379>
EXPIPE有效期设置命令:
具体用法:
192.168.1.209:6379> help EXPIREEXPIRE key secondssummary: Set a key's time to live in secondssince: 1.0.0group: generic192.168.1.209:6379>
例如:
192.168.1.209:6379> EXPIRE age 20
(integer) 1
192.168.1.209:6379> TTL age
(integer) 13
192.168.1.209:6379>
TTL查看剩余期限命令:
具体用法:
192.168.1.209:6379> help TTLTTL keysummary: Get the time to live for a keysince: 1.0.0group: generic192.168.1.209:6379>
例如:
当我们使用TTL查看到剩余时间为-1的时候,他表示的就是永久有效
192.168.1.209:6379> TTL age
(integer) 13
192.168.1.209:6379> TTL name
(integer) -1
192.168.1.209:6379> KEYS * # 因为age的有效时间到了,所以age消失了,而只剩下name的永久有效
1) "name"
192.168.1.209:6379>
String类型:
String的3种类型:
其中value是字符串,不过根据字符串的格式不同,可以分为3类:
注:不管是那种格式,底层都是字节数组形式存储的,只不过是编码的方式不同。字符串类型的最大空间不能超过512mb
String类型的常见命令:
SET插入数据命令:
我们能通过help [command]可以查看一个命令的具体用法
具体用法
192.168.1.209:6379> help SETSET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]summary: Set the string value of a keysince: 1.0.0group: string192.168.1.209:6379>
插入数据
192.168.1.209:6379> SET age 20
OK
192.168.1.209:6379> KEYS a*
1) "age"
192.168.1.209:6379>
MSET多重插入命令:
多重插入
192.168.1.209:6379> MSET k1 v1 k2 v2 k3 v3
OK
192.168.1.209:6379> KEYS *
1) "age"
2) "k1"
3) "k3"
4) "name"
5) "k2"
192.168.1.209:6379>
GET获取数据命令:
具体用法:
192.168.1.209:6379> help GETGET keysummary: Get the value of a keysince: 1.0.0group: string192.168.1.209:6379>
例如:
192.168.1.209:6379> GET name
"claylpf"
192.168.1.209:6379>
MGET多重获取命令:
192.168.1.209:6379> MSET k1 v1 k2 v2 k3 v3
OK
192.168.1.209:6379> KEYS *
1) "k1"
2) "k3"
3) "name"
4) "k2"
192.168.1.209:6379> MGET k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
192.168.1.209:6379>
INCR自增命令:
192.168.1.209:6379> GET age
"18"
192.168.1.209:6379> INCR age
(integer) 19
192.168.1.209:6379> INCR age
(integer) 20
192.168.1.209:6379>
INCRBY指定自增命令:
192.168.1.209:6379> GET age
"20"
192.168.1.209:6379> INCRBY age 2
(integer) 22
192.168.1.209:6379> INCRBY age 2
(integer) 24
192.168.1.209:6379> INCRBY age 3
(integer) 27
192.168.1.209:6379>
也可以实现自减操作
192.168.1.209:6379> INCRBY age 3
(integer) 27
192.168.1.209:6379> INCRBY age -1
(integer) 26
192.168.1.209:6379> INCRBY age -1
(integer) 25
192.168.1.209:6379> INCRBY age -2
(integer) 23
192.168.1.209:6379>
INCRBYFLOAT指定浮点数自增命令:
192.168.1.209:6379> set float1 10.11
OK
192.168.1.209:6379> GET float1
"10.11"
192.168.1.209:6379> INCRBYFLOAT float1 0.5
"10.61"
192.168.1.209:6379> INCRBYFLOAT float1 0.5
"11.11"
192.168.1.209:6379> INCRBYFLOAT float1 -1.5
"9.61"
192.168.1.209:6379> INCRBYFLOAT float1 -1.5
"8.11"
192.168.1.209:6379>
SETNX添加String类型键值对命令(前提是key不存在,否则不执行)
具体用法:
192.168.1.209:6379> help SETNXSETNX key valuesummary: Set the value of a key, only if the key does not existsince: 1.0.0group: string192.168.1.209:6379>
例如:
192.168.1.209:6379> SETNX name2 lisi
(integer) 1
192.168.1.209:6379> get name2
"lisi"
192.168.1.209:6379> SETNX name lisi2
(integer) 0
192.168.1.209:6379> get name
"claylpf"
192.168.1.209:6379>
SETEX添加Sting类型键值对命令(指定有效期)
具体用法:
192.168.1.209:6379> help SETEXSETEX key seconds valuesummary: Set the value and expiration of a keysince: 2.0.0group: string192.168.1.209:6379>
例如:
192.168.1.209:6379> SETEX name3 30 jack
OK
192.168.1.209:6379> TTL name3
(integer) 24
192.168.1.209:6379> TTL name3
(integer) 21
192.168.1.209:6379> TTL name3
(integer) 19
192.168.1.209:6379> GET name3
"jack"
192.168.1.209:6379>
Redis的key的格式:
问题:Redis没有类似Mysql的Table的概念,我们该如何区分不同类型的key呢?
例如:当我们需要存储用户、商品的信息到redis,如果有一个用户的id是1,而有一个商品的id恰好是也是1,我们应该如何解决这个问题呢。
我们可以通过拼接key的结构实现多层级结构
key的结构:
这个格式并非固定的,我们也可以根据自己的需求来删除或者添加词条。
实操:
Hash类型
为什么需要使用Hash类型呢?
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便
因此,我们需要使用到Hash类型。
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD(增删改查)
Hash类型的常见命令:
HSET key field value:添加或者修改hash类型的key和fired的值
192.168.1.209:6379> HSET heima:user:3 name lucy
(integer) 1
192.168.1.209:6379> HSET heima:user:3 age 22
(integer) 1
192.168.1.209:6379> HSET heima:user:4 name band
(integer) 1
192.168.1.209:6379> HSET heima:user:4 age 23
(integer) 1
192.168.1.209:6379> KEYS heima*
1) "heima:user:4"
2) "heima:user:3"
HGET key field:获取一个hash类型的key的field的值
192.168.1.209:6379> HGET heima:user:3 name
"lucy"
192.168.1.209:6379> HGET heima:user:3 age
"22"
192.168.1.209:6379> HGET heima:user:4 name
"band"
192.168.1.209:6379> HGET heima:user:4 age
"23"
192.168.1.209:6379>
HMSET:添加多个hash类型的key的field值
192.168.1.209:6379> HMSET heima:user:5 name clay age 24 sex man
OK
192.168.1.209:6379> HMGET heima:user:5 name age sex
1) "clay"
2) "24"
3) "man"
192.168.1.209:6379>
HMGET:获取多个hash类型的key的field值
192.168.1.209:6379> HMSET heima:user:5 name clay age 24 sex man
OK
192.168.1.209:6379> HMGET heima:user:5 name age sex
1) "clay"
2) "24"
3) "man"
192.168.1.209:6379>
HGETALL:获取一个hash类型的key中所有的field和value
192.168.1.209:6379> HGETALL heima:user:4
1) "name"
2) "band"
3) "age"
4) "23"
192.168.1.209:6379> HGETALL heima:user:5
1) "name"
2) "clay"
3) "age"
4) "24"
5) "sex"
6) "man"
192.168.1.209:6379>
HKEYS:获取一个hash类型的key中的所有的field
192.168.1.209:6379> HKEYS heima:user:5
1) "name"
2) "age"
3) "sex"
192.168.1.209:6379> HKEYS heima:user:4
1) "name"
2) "age"
192.168.1.209:6379>
HVALS:获取一个hash类型的key中的所有的value
192.168.1.209:6379> HVALS heima:user:4
1) "band"
2) "23"
192.168.1.209:6379> HVALS heima:user:5
1) "clay"
2) "24"
3) "man"
192.168.1.209:6379>
HINCRBY:让一个hash类型key的字段值自增并指定步长
192.168.1.209:6379> HINCRBY heima:user:4 age 2
(integer) 25
192.168.1.209:6379> HINCRBY heima:user:4 age 2
(integer) 27
192.168.1.209:6379> HVALS heima:user:4
1) "band"
2) "27"
192.168.1.209:6379> HINCRBY heima:user:4 age -10
(integer) 17
192.168.1.209:6379> HVALS heima:user:4
1) "band"
2) "17"
192.168.1.209:6379>
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
192.168.1.209:6379> HSETNX heima:user:4 sex woman
(integer) 1
192.168.1.209:6379> HGETALL heima:user:4
1) "name"
2) "band"
3) "age"
4) "17"
5) "sex"
6) "woman"
192.168.1.209:6379> HSETNX heima:user:5 sex woman
(integer) 0
192.168.1.209:6379> HGETALL heima:user:5
1) "name"
2) "clay"
3) "age"
4) "24"
5) "sex"
6) "man"
192.168.1.209:6379>
相关文章:

Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令
目录 Redis的数据结构: Redis命令: 通用命令:(通用指令是部分数据类型的,都可以使用的指令) KEYS查询命令: DEL删除命令: EXISTS判断命令: EXPIPE有效期设置命令&…...

vue中的几种name属性
vue中的几种name属性 组件名name name选项 export default{name:xxx } // 获取组件的name属性 this.$options.namevue-devtools调试工具里显示的组件名称; 未配置name选项,就是组件的文件名; vue3配置name通过defineOptions()函数 de…...

论文《面向大规模日志数据分析的自动化日志解析》翻译
论文《Towards Automated Log Parsing for Large-Scale Log Data Analysis》翻译 面向大规模日志数据分析的自动化日志解析翻译...

element-ui dialog弹窗 设置点击空白处不关闭
根据官网提供方法 场景:vue实现的网站有两个弹窗同时出现时,关闭报警,批量进度条弹窗也关闭了, 1、每一个页面都有可能出现的报警弹窗, 2、页面a批量操控硬件添加操作的进度条弹窗 开始以为是因为点击报警弹窗&#…...

第16节-PhotoShop基础课程-修复工具组-去水印
文章目录 前言1.污点修复画笔1.功能原理2.调整1.调整大小 Alt 右键 左右2.调整软硬 Alt 右键 上下 2.修复画笔工具 Alt 选取源1.常规2.选择图案 3.修补工具1.类型1.源2.目标 2.扩展 4.内容感知移动工具5.红眼工具 前言 去水印等 1.污点修复画笔 比如把下面的土豆(…...

conda的使用教程
conda的介绍 简单来说,conda软件就是来管理包的软件。以Python为例,在实际生活中,我们要处理多个不同的项目,因此,要安装不同的项目所需要的包,为了管理方便,conda就是用来打理不同项目的包&…...

客户端发现pod并与之通信
客户端发现pod并与之通信 pod需要一种寻找其他pod的方法来使用其他pod提供的服务,不像在没有Kubernetes的世界,系统管理员要在用户端配置文件中明确指出服务的精确IP地址 或者主机名来配置每个客户端应用,但同样的方法在Kubernetes中不适用 …...

Powershell模拟实现Linux下的tree命令
Powershell模拟实现Linux下的tree命令 代码 环境: P o w e r s h e l l 7 Powershell\ 7 Powershell 7 function Get-Tree {param([string]$directory ".",[int]$d 1,[switch]$f)$absolutePath Resolve-Path -Relative $directoryWrite-Host $absol…...

嵌入式基础-电路
目录 1、电流 1.1电流方向 1.2交流电和直流电 2、电压 3、电阻 4、欧姆定律 1、电流 电流是指单位时间内通过导体的电荷量,用符号I表示,单位是安培(A)。电流是电磁学中的基本量纲之一,是七个基本量纲之一。电流的…...

【JS面试题】如何通过闭包漏洞在外部修改函数中的变量
✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 前端面试题 文章目录 什么是闭包例 如何在函数外部修改闭包中变量 什么是闭包 闭包这个东西对新…...

【华为OD机试】按身高和体重排队【2023 B卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列, 对身高相同的人,按体重由轻到重排列; 对于身高体重都相同的人,维持原有的编号顺序关系。请输…...

TCP原理(全网最详细)
一、确认应答(可靠性机制) TCP诞生的初衷就是可靠传输 可靠传输是TCP最核心的部分,TCP内部很多机制都是在保证可靠传输(可以理解为发一条消息,上面显示已读未读,可靠传输就是发一条消息我知道对方是否收到…...

react 初级基础
react基本使用 项目创建 项目的创建命令 npx create-react-app react-basic创建一个基本元素进行渲染 // 1 导入react 和 react-dom import React from "react"; import ReactDOM from "react-dom";// 2 创建 react 元素 React提供了创建元素的api Rea…...

linux学习书籍推荐
《Linux程序设计(第4版)》,Neil Matthew和Richard Stones编写。这本书是Linux/UNIX专家编写的,详细介绍了Linux系统以及其他UNIX风格的操作系统上的程序开发,包括标准Linux C语言函数库和各种由Linux或UNIX标准指定的工…...

LeetCode 428. Serialize and Deserialize N-ary Tree【树,BFS,DFS】困难
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

javascript | 变量、函数、属性的命名规则
javascript标识符的命名规则 变量、函数、属性的名字、或者函数的参数,都可称为标识符。标识符可以是按照下列格式规则组合起来的一个或者多个字符。 第一个字符必须是一个字母、下划线_、或美元符号$。数字不可以作为标识符的首字符。其他字符可以是数字、字母、…...

手写Ribbon基本原理
本文已收录于专栏 《中间件合集》 目录 概念说明什么是RibbonRibbon和Nginx负载均衡的区别 工作流程代码实现RibbonSDK发送请求端引入RibbonSDK和Nacos的依赖配置文件中填写负载均衡策略调用代码 接收请求端执行效果发送请求端接收请求端 总结提升 概念说明 什么是Ribbon Ribb…...

k8s集群中ETCD备份和恢复
文章目录 [toc]一、etcd 概述二、安装etcdctl工具三、kubeadm部署方式部署1)备份2)恢复四、定时备份 五、二进制部署备份1)备份2)恢复1、停止apiserver和etcd2、etcd_1恢复3、etcd_2恢复4、etcd_3恢复5、启动etcd和apiserver6、检…...

node版本问题
服务器下载下来的vue项目启动出现下列问题 npm ERR! path E:\vueEnv\app\node_modules\node-sass npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js npm ERR! Building: C:\Program Files\nodejs\node.exe E:\vueEnv\ap…...

四)Stable Diffussion使用教程:图生图
这一篇来说说图生图。 除了文生图之外,SD常用的还有图生图模式。 图生图,顾名思义就是使用一张图去让AI生成自己喜欢的另一张图。 有时候我们有一张喜欢的图,但是希望换一种颜色方案,这时就可以通过图生图的方式去实现了&#…...

yolov7简化yaml配置文件
yolov7代码结构简单,效果还好,但是动辄超过70几个模块的配置文件对于想要对网络进行魔改的朋友还是不怎么友好的,使用最小的tiny也有77个模块 代码的整体结构简单,直接将ELAN结构化写成一个类就能像yolov5一样仅仅只有20几个模块&…...

pprof火焰图性能优化
pprof火焰图性能优化 火焰图(flame graph)是性能分析的利器,在go1.1之前的版本我们需要借助go-torch生成,在go1.1后go tool pprof集成了此功能,今天就来说说如何使用其进行性能优化 在你启动http server的地方直接加入导入: _ “net/http/pprof” 获取…...

Greenplum 查找数据目录占用最大的表
背景 社区中某同学提出问题: 某环境磁盘占用空间较大,于是想找到数据目录占用最大的表。使用常规查询找不出来,于是到数据目录下分析filenode,找到3个filenode占了400G。然而根据filenode从pg_class中确找不到对应的relfilenode。…...

Java 基于 SpringBoot 的酒店管理系统,附源码和数据库
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 一、前言介绍二、系统结构三、系统详细实现3.1用户信息管理3.2会员信息管理3.3客房信息管理3.4收藏…...

LinkedList(4):多线程LinkedList 不安全情况
多线程不安全演示,线程越多,现象越明显,这边只启了四个线程。 package com.example.demo;import java.util.LinkedList; import java.util.UUID;public class LInkedListThread {public static void main(String[] args) {final LinkedList&…...

3D印刷电路板在线渲染查看工具
从概念上讲,这是有道理的,因为PCB印制电路板上的走线从一个连接到下一个连接的路线基本上是平面的。 然而,我们生活在一个 3 维世界中,能够以这种方式可视化电路以及相应的组件,对于设计过程很有帮助。本文将介绍KiCad…...

【mysql】出现 slow sql 问题及建议
文章目录 1. SQL 执行什么情况下会变慢?2. 影响 SQL 语句执行效率的主要因素有哪些?3. 慢 SQL 是如何拖垮数据库的?4. 最佳实践建议 1. SQL 执行什么情况下会变慢? ● 数据量增加:数据库中的数据量可能会逐渐增加&…...

element树形筛选
<el-inputv-model"projectName"placeholder"请输入名称"clearablemaxlength"10"clear"clearTree" /> <el-divider /> <el-treeref"tree"class"filter-tree":data"treeList":props"…...

打字侠:一款专业的中文打字网站
打字侠第一个正式版发布啦!!! 虽然离期望的样子还有一段路要走,不过能看到它正式发布,我还是很激动哟! 打字侠是一款面向中学生和大学生的在线打字软件,它通过合理的课程设计和精美的图形界面帮…...

C++ std::default_random_engine的使用
使用std::default_random_engine可生成不同分布的随机数,下面使用实例来说明其使用。 随机生成0-1间的实数 //利用当前时间生成的种子,可保证每次生成的值都不一样 unsigned seed std::chrono::system_clock::now().time_since_epoch().count(); std:…...