企业架构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做缓存。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)

Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化) 在前面的文章中,我们分别介绍了Layout整体布局,以及StatusBar类的初始化.前者介绍了整体上面的布局,后者介绍了三大窗口的创建的入口处,以及需要做的准备工作.现在我们分别来细化三大窗口的UI创建和…

GitLab使用的最简便方式

GitLab介绍 GitLab是一个基于Git版本控制系统的开源平台,用于代码托管,持续集成,以及协作开发。它提供了一套完整的工具,以帮助开发团队协同工作、管理和部署代码。 往往在企业内部使用gitlab管理代码,记录一下将本地代…

redis 集群(cluster)

1. 前言 我们知道,在Web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999% 等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些&#xf…

6.3 字符数组

思维导图: 前言: 主要内容: 前言内容整理 字符型数据和存储 字符型数据是依据字符的ASCII代码存储在内存单元中,通常占用一个字节的空间。ASCII代码可以被认为是整数,因此在C99标准中,字符类型被归类为整…

现在进入广告行业好做吗?

广告行业真的很好,大家快来…… 在这里你可以无限发挥你的创意和想象力,有趣的同事,不刻板的工作内容,与爱豆合作,偶尔见见明星,出入城市CBD,一身名牌,精美PPT挥斥方遒,…

渗透测试之漏洞挖掘指南(一)

1.漏洞挖掘中什么漏洞最多? 新手想快速挖掘到漏洞,要专注在业务逻辑与前端漏洞 -- 业务逻辑 (弱密码,等等) -- 前端漏洞 (xss, csrf , cors, jsonp...) 2. 常见漏洞提交平台 注册应急响应中…

数据清洗:数据挖掘的前期准备工作

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

【unity小技巧】Unity 存储存档保存——PlayerPrefs、JsonUtility和MySQL数据库的使用

文章目录 前言PlayerPrefs一、基本介绍二、Demo三、优缺点 JsonUtility一、基本使用二、Demo三、优缺点 Mysql(扩展)完结 前言 游戏存档不言而喻,是游戏设计中的重要元素,可以提高游戏的可玩性,为玩家提供更多的自由和…

更新GitLab上的项目

更新GitLab上的项目 如有需要,请参考这篇:上传项目到gitlab上 1.打开终端,进入到本地项目的根目录。 2.如果你还没有将远程GitLab仓库添加到本地项目,你可以使用以下命令: 比如: git remote add origin …

如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…

ns2无线局域网隐藏节点仿真实验

ns2无线局域网隐藏节点仿真实验 实验内容实验原理实验过程相关模块安装仿真模块 问题总结问题一问题二问题三 实验内容 无线网络与移动技术第二次实验,用ns2完成无线局域网隐藏节点仿真实验。 实验原理 隐藏节点指在接收节点的覆盖范围内而在发送节点的覆盖范围外…

个人博客网站一揽子:Docker搭建图床(Lsky Pro)

Lsky Pro 介绍 Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。 兰空图床始于 2017 年 10 月,最早的版本由 ThinkPHP 5 开发&#xff0…

在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

线性代数的本质——几何角度理解

B站网课来自 3Blue1Brown的翻译版,看完醍醐灌顶,强烈推荐: 线性代数的本质 本课程从几何的角度翻译了线代中各种核心的概念及性质,对做题和练习效果有实质性的提高,下面博主来总结一下自己的理解 1.向量的本质 在物…

Mac中IntelliJ IDEA每次打开立刻“意外退出”的解决方法

本文介绍在Mac电脑中,无法打开IntelliJ IDEA软件,出现“意外退出”的报错提示,且重启软件依然出现这一情况的通用解决思路与方法。 最近,不知道怎么回事,点击图标准备打开IntelliJ IDEA软件时,很快就会出现…

SpringBoot实战(二十四)集成 LoadBalancer

目录 一、简介1.定义2.取代 Ribbon3.主要特点与功能4.LoadBalancer 和 OpenFeign 的关系 二、使用场景一:Eureka LoadBalancer服务A:loadbalancer-consumer 消费者1.Maven依赖2.application.yml配置3.RestTemplateConfig.java4.DemoController.java 服务…

计算机专业毕业设计项目推荐07-科研成果管理系统(JavaSpringBoot+Vue+Mysql)

科研成果管理系统(JavaSpringBootVueMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现****最后想说的****联系方式** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以…

Mybatis学习笔记8 查询返回专题

1.返回实体类 2.返回List<实体类> 3.返回Map 4.返回List<Map> 5.返回Map<String,Map> 6.resultMap结果集映射 7.返回总记录条数 新建模块 依赖 目录结构 1.返回实体类 如果返回多条,用单个实体接收会出异常 2.返回List<实体类> 即使返回一条记…

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

PHP8的类与对象的基本操作之成员方法-PHP8知识详解

成员方法是指在类中声明的函数。 在类中可以声明多个函数&#xff0c;所以对象中可以存在多个成员方法。类的成员方法可以通过关键字进行修饰&#xff0c;从而控制成员方法的商用权限。 函数和成员方法唯一的区别就是&#xff0c;函数实现的是某个独立的功能&#xff0c;而成…