当前位置: 首页 > news >正文

企业架构LNMP学习笔记48

数据结构类型操作:

数据结构:存储数据的方式

数据类型

算法:取数据的方式,代码就把数据进行组合,计算、存储、取出。

排序算法:冒泡排序、堆排序  二分。

key:

key的命名规则不同于一般语言,键盘上除了空格、\n换行外其他大部分字符都可以使用。

像“my key”和“mykey\n”这样包含空格和换行的key是不允许的。变量名称:

我们在使用的时候可以自己定义一个key的格式:

key的命名不要太长,占用内存,查询慢。

key不要太短。像u:1000:pwd:123456 就不如:user:1000:password:123456 可读性好。

127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379>
127.0.0.1:6379> help existsEXISTS key [key ...]summary: Determine if a key existssince: 1.0.0group: generic127.0.0.1:6379> exists name age

里面默认有16个数据库,从0到15。

move name 16

select 16

keys *

dbsize

flushdb

flushall

这两个命令在生产环境中尽量少用。

String数据类型:

String是Redis最基本的类型。

Redis的String可以包含任何数据。包括jpg图片,base64或者序列化对象。

单个value的最大上限是512MB。

如果只用String类型,Redis就可以看做是持久化性的memcached。

序列化字符串。

图片也可以字符串。

substr name 5 10

append name centos

strlen name

set:

Redis的set是String类型的无序集合,集合里面不允许有重复的元素。

set元素最大可以包含2的32次方-1个元素。

关于set元素类型除了基本的添加删除操作,其他常用的操作还包括集合的取并集union、交集intersection、差集difference、通过这些操作可以很容易地实现sns中的好友推荐功能。

而且是内存操作,速度非常快。

tips:mysql连表文氏图:

需求:实现朋友圈的存储和共同好友的计算。

设计:

key value

xiaomingFR xiaohong xiaoqiang xiaogang xiaohei xiaobai

xiaohongFR xiaoming xiaolv xiaolan xiaobai xiaohei

127.0.0.1:6379> sadd xiaomingFR xiaohong  xiaoqiang  xiaogang  xiaohei  xiaobai
(integer) 5
127.0.0.1:6379> sadd xiaohongFR xiaoming  xiaolv  xiaolan  xiaobai  xiaohei
(integer) 5
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> smembers xiaomingFR
1) "xiaogang"
2) "xiaohong"
3) "xiaoqiang"
4) "xiaohei"
5) "xiaobai"
127.0.0.1:6379> smembers xiaohongFR
1) "xiaobai"
2) "xiaolv"
3) "xiaolan"
4) "xiaoming"
5) "xiaohei"
127.0.0.1:6379>
127.0.0.1:6379> sinter xiaomingFR xiaohongFR
1) "xiaohei"
2) "xiaobai"
127.0.0.1:6379> sunion xiaomingFR xiaohongFR
1) "xiaobai"
2) "xiaolv"
3) "xiaohong"
4) "xiaogang"
5) "xiaolan"
6) "xiaoming"
7) "xiaoqiang"
8) "xiaohei"127.0.0.1:6379> sdiff xiaomingFR xiaohongFR
1) "xiaohong"
2) "xiaogang"
3) "xiaoqiang"
127.0.0.1:6379> sdiff xiaohongFR xiaomingFR
1) "xiaolv"
2) "xiaolan"
3) "xiaoming"

主要是看业务是怎么操作的。

使用set建立黑名单(白名单)

127.0.0.1:6379> sadd black_list 192.168.17.1
(integer) 1
127.0.0.1:6379> sismember black_list 192.168.17.1
(integer) 1
127.0.0.1:6379> sismember black_list 192.168.17.110
(integer) 0

zset:

和set一样sorted set也是string类型元素的集合,有序集合,元素不允许重复。

不同的是每个元素都会关联一个权。权重,score。

通过权值可以有序地获取集合中的元素,可以通过score值进行排序。

这个score就是权值。

需求:实现手机App市场的软件排名。排名榜单。

设计:

Key : hotTop

id Score(权重) name

1   2   QQ

2   3   wechat

3   5   alipay

4   7   taobao

5 10   king

6   8   jd

127.0.0.1:6379> zadd hotTop 2 QQ 3 wechat 5 alipay 7 taobao 10 king 8 jd
(integer) 6# 从小到大排序。
127.0.0.1:6379> zrange hotTop 0 5
1) "QQ"
2) "wechat"
3) "alipay"
4) "taobao"
5) "jd"
6) "king"# 从大到小排序。
127.0.0.1:6379> zrevrange hotTop 0 5
1) "king"
2) "jd"
3) "taobao"
4) "alipay"
5) "wechat"
6) "QQ"127.0.0.1:6379> zscore hotTop wechat
"3"

zrange命令可以看到jd排第五名,淘宝排第四名。

获取jd的score和taobao的score。

127.0.0.1:6379> zscore hotTop jd
"8"
127.0.0.1:6379> zscore hotTop taobao
"7"

把jd的权值调小到6,才能排到taobao前面。那jd的权值减小2。

127.0.0.1:6379> zincrby hotTop -2 jd
"6"
127.0.0.1:6379>
127.0.0.1:6379> zrange hotTop 0 5
1) "QQ"
2) "wechat"
3) "alipay"
4) "jd"
5) "taobao"
6) "king"
127.0.0.1:6379> zscore hotTop jd
"6"

使用zincrby 增加一个负值,就能将score权值进行了调整。

zrank是排名下标。从小到大排名。

127.0.0.1:6379> zrank hotTop jd
(integer) 3

hash:

如果采用hash结构,redis的内存使用率更高。效率更高一些。

使用redis做缓存,可以使用hash结构,压缩效率和使用效率更高,比String。

hash存储数据和关系型数据库mysql,存储的一条数据的结构极为相似。

key: value  (field: value)

127.0.0.1:6379> hmset devops username devops phone 13813424930 email 853166277@qq.com job java
OK127.0.0.1:6379> hget devops job
"java"
127.0.0.1:6379> hgetall devops
1) "username"
2) "devops"
3) "phone"
4) "13813424930"
5) "email"
6) "853166277@qq.com"
7) "job"
8) "java"127.0.0.1:6379> hdel devops email
(integer) 1
127.0.0.1:6379> hgetall devops
1) "username"
2) "devops"
3) "phone"
4) "13813424930"
5) "job"
6) "java"127.0.0.1:6379> hkeys devops
1) "username"
2) "phone"
3) "job"
127.0.0.1:6379> hvals devops
1) "devops"
2) "13813424930"
3) "java"127.0.0.1:6379> hset devops email 13813424930
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> hgetall devops
1) "username"
2) "devops"
3) "phone"
4) "13813424930"
5) "job"
6) "java"
7) "email"
8) "13813424930"

使用Redis做缓存,要学会使用hash做缓存。

相关文章:

企业架构LNMP学习笔记48

数据结构类型操作: 数据结构:存储数据的方式 数据类型 算法:取数据的方式,代码就把数据进行组合,计算、存储、取出。 排序算法:冒泡排序、堆排序 二分。 key: key的命名规则不同于一般语言…...

docker部署neo4j

拉取镜像 docker pull neo4j:3.5.35-community查看镜像 [rootlocalhost data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE neo4j 3.5.35-community 3548ff943256 13 months ago 446MB创建容器并运行 docker run -d …...

融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?

本周四 融云直播间,点击报名~ ChatGPT 的出现,不仅让会话成为了未来商业的基本形态,也把大家谈论 AI 的语境从科技产业转向了 AI 与全产业的整合。 关注【融云全球互联网通信云】了解更多 而目前最热衷于拥抱生成式 AI 的行业中&#xff0c…...

运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页

第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫…...

uni-app 点击蒙版层时关闭自定义弹窗

click.stop&#xff1a;用于阻止冒泡 click.stop 标签范围内&#xff0c;点击任何区域(包括 click 点击事件)都不会关闭弹窗。标签范围外会关闭弹窗 click.stop 标签内的 click 等事件&#xff1a;如果事件内有关闭弹窗的代码可关闭弹窗 在 template 中 <view class&quo…...

【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)

文章目录 创建环境创建专用网络VPC安全组创建云服务器打包部署2. Java环境启动项目开机启动任意服务1. 制作服务文件2. 制作启动脚本3. 制作停止脚本4. 增加执行权限5. 设置开机启动 创建镜像继续创建多台云服务器负载均衡弹性伸缩redis的报警规则白名单1. LAMP 环境1. 安装Apa…...

基于Java的设计模式-策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 基本概念 策略模式主要是解决多种算法相似的情况下&#xff0c;使用if...else所带来的复杂和难以维护。当存在系统中有多个类&#xff0c;但是区分它们的是只是它们的直接行为&#xff0c;那我们…...

小程序多种姿势更换文章

概述 简单的文章切换demo&#xff0c;通过倒计时、摇一摇、双击进行文章切换 详细 直接看效果图吧&#xff01;比较简单&#xff0c;主要是练习一下... 小程序不带双击事件&#xff0c;可以记录第一次单击事件和第二次单机事件进行双击操作。 1、摇一摇是通过调用官方的 …...

读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]

文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…...

DNDC模型建模方法及应用

DNDC&#xff08;Denitrification-Decomposition&#xff0c;反硝化-分解模型&#xff09;是目前国际上最为成功的模拟生物地球化学循环的模型之一&#xff0c;自开发以来&#xff0c;经过不断完善和改进&#xff0c;从模拟简单的农田生态系统发展成为可以模拟几乎所有陆地生态…...

Kafka为什么是高性能高并发高可用架构

目录 1 前言2 顺序写入3 页缓存4 零拷贝5 Broker 性能6 流数据并行7 总结 1 前言 我们都知道 Kafka 是基于磁盘进行存储的&#xff0c;但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点&#xff0c;其吞吐量动辄几十上百万。小伙伴们是不是有点困惑了&#xff0c;一般认为…...

QT-day3

完成文本编辑器的保存工作 void Widget::on_savebton_clicked() {QString fileName QFileDialog::getSaveFileName(this,"保存","./","All(*.*);;Images(*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");QFile file(fileName);i…...

开发自测的测试用例设计方法

测试用例设计方法有&#xff1a;等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。 测试用例就是一个文档&#xff0c;描述输入、动作、或者时间和一个期望的结果&#xff0c;其目的是确定应用程序的某个特性是否正常的工作。 一.等价类划分法 顾名思义&#x…...

【AI视野·今日Sound 声学论文速览 第七期】Tue, 19 Sep 2023

AI视野今日CS.Sound 声学论文速览 Tue, 19 Sep 2023 Totally 1 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Frame-to-Utterance Convergence: A Spectra-Temporal Approach for Unified Spoofing Detection Authors Awais Khan, Khalid Mahmood Ma…...

MySQL 清空表 截断表

清空表&#xff1a;delete from users&#xff1b; 清空表只是清空表中的逻辑数据&#xff0c;但是物理数据不清除&#xff0c;如主键值、索引等不被清除&#xff0c;还是原来的值。 截断表&#xff1a;truncate table users&#xff1b; 截断表可以用于删除表中 的所有数据…...

2020-2023中国高等级自动驾驶产业发展趋势研究-中国高等级自动驾驶发展近况

1.2 中国高等级自动驾驶发展近况 通过对中国高等级自动驾驶行业的观察和分析&#xff0c;亿欧汽车认为&#xff0c;除技术解决方案提供商外&#xff0c;如今的车企、政府、资本同样在产业链中扮演重要角色。此外&#xff0c;车路协同技术的发展也为高等级自动驾驶的发展提供了更…...

Spring学习之ImportBeanDefinitionRegistrar接口

一、本文内容分类 1、接口功能 2、接口运用场景 3、使用案例 4、注意事项 二、接口功能介绍 描述&#xff1a;ImportBeanDefinitionRegistrar接口是也是spring的扩展点之一,它可以支持我们自己写的代码封装成BeanDefinition对象,注册到Spring容器中&#xff0c;功能类似于注…...

React 全栈体系(八)

第四章 React ajax 三、案例 – github 用户搜索 2. 代码实现 2.3 axios 发送请求 Search /* src/components/Search/index.jsx */ import React, { Component } from "react"; import axios from axiosexport default class Search extends Component {search …...

4.开放-封闭原则

这个原则其实是有两个特征&#xff0c;一个是说‘对于扩展是开放的(Open for extension)&#xff0c;另一个是说‘对于更改是封闭的(Closed for modification)[ASD]。...

oracle递归with子句

比如现在想获取开始日期到结束日期每个月的月底日期&#xff0c;这个时候可以通过递归实现&#xff1a; --通过递归with子句获取开始日期到结束日期每个月的月末日期 WITH date_range (month_start, month_end) AS (SELECT TRUNC(to_date(bdate,yyyy-mm-dd), MM),LAST_DAY(to_…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...