十四:爬虫-Redis基础

1、背景

随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。

2、redis是什么

Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,是由c语言编写的。
常见的内存型数据库,除 Redis 之外,还有 Oracle Berkeley DB(甲骨文旗下的一款产品)、SQlite(轻量级内存数据库)、Memcache(键值型分布式缓存数据库)、Altibase(基于内存的高性能数据库)。

3、redis特点

与其他内存型数据库相比,Redis 具有以下特点:

  • Redis 不仅可以将数据完全保存在内存中,还可以通过磁盘实现数据的持久存储;
  • Redis 支持丰富的数据类型,包括 stringlistsetzsethash 等多种数据类型,因此它也被称为“数据结构服务器”;
  • Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向任意数量的从服务器上同步,有效地保证数据的安全性;
  • Redis 支持多种编程语言,包括 CC++PythonJavaPHPRubyLua 等语言。

4、redis优势

下面对 Redis 的优势进行了简单总结:

  • 性能极高:Redis 基于内存实现数据存储,它的读取速度是 110000次/s,写速度是 81000次/s;
  • 多用途工具: Redis 有很多的用途,比如可以用作缓存、消息队列、搭建 Redis 集群等;
  • 命令提示功能:Redis 客户端拥有强大的命令提示功能,使用起来非常的方便,降低了学习门槛;
  • 可移植性:Redis 使用用标准 C语言 编写的,能够在大多数操作系统上运行,比如 LinuxMacSolaris 等。

5、Redis架构

Redis体系架构主要分为两个部分:

  • Redis服务端
  • Redis客户端

客户端和服务端可以位于同一台计算机上,也可以位于不同的计算机上。服务端是整个架构的“大脑”,能够把数据存储到内存中,并且起到管理数据的作用。

6、Redis应用场景

Redis 用来缓存一些经常被访问的热点数据、或者需要耗费大量资源的内容,通过把这些内容放到 Redis 中,可以让应用程序快速地读取它们。例如,网站的首页需要经常被访问,并且在创建首页的过程中会消耗的较多的资源,此时就可以使用 Redis 将整个首页缓存起来,从而降低网站的压力,减少页面访问的延迟时间。

7、redis学习地址

1、官网地址:https://redis.io/
2、命令地址:http://doc.redisfans.com/
3、更多配置文件: https://www.cnblogs.com/kreo/p/4423362.html

8、redis与其他数据库的对比

数据库的存储方式大体可分为两大类,基于磁盘存储和基于内存存储。磁盘存储的数据库,因为磁头机械运动以及系统调用等因素导致读写效率较低。Redis 基于内存来实现数据存取,相对于磁盘来说,其读写速度要高出好几个数量级。下表将 Redis 数据库与其他常用数据库做了简单对比:

Redis 基于内存来实现数据的存储,因此其速度非常快。但是我们知道,计算机的内存是非常珍贵的资源,所以 Redis 不适合存储较大的文件或者二进制数据,否则会出现错误,Redis 适合存储较小的文本信息。理论上 Redis 的每个 keyvalue 的大小不超过 512 MB。总得来说,上述数据库各有优势,当我们选用数据库时,也要因地制宜,选择一款与业务场景最相符合的数据库。

9、redis的安装与配置

启动服务
redis-server.exe链接客户端
redis-cli.exe

10、redis数据库常用命令

select 0 切换数据库 默认有16个数据库 0-15 下标从0开始
DBSIZE      查看当前数据库的key数量
keys *      查看key的内容
FLUSHDB     清空当前数据库的key的数量 
FLUSHALL    清空所有库的key(慎用)
exists key   判断key是否存在

11、redis常用五大数据类型:

1、redis-string

stringredis最基本的类型,一个key对应一个value

16458d666d851a12.gif

string可以包含任何数据,最大不能超过512M
1.set/get/del/append/strlen

set  ---- 设置值
get  ---- 获取值
mset  ---- 设置多个值
mget  ---- 获取多个值
append ---- 添加字段
del ---- 删除
strlen ---- 返回字符串长度

2.incr/decr/incrby/decrby

incr ---- 增加
decr ---- 减少
incrby  ----- 制定增加多少
decrby  ----- 制定减少多少

3.getrange/setrange

getrange ---- 获取指定区间范围内的值,类似between....and的关系  [] 闭区间 
setrange ---- 代表从第几位开始替换,下脚本从零开始
从0 -1表示全部

2、redis-list(单值多value)

List(列表)
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边)
它的底层实际是个链表

列表.gif
1.lpush/rpush/lrange

lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01  1 2 3 4 5  倒序排列
rpush list02  1 2 3 4 5  正序排列
lrange  list01  0  -1  获取list01 中的所有值

2.lpop/rpop

lpop/rpop ---- 移除最左/最右
lpop list01 删除元素5
rpop list01 删除元素1

3.lindex,按照索引下标获得元素(从上到下)

lrange list01 0 -1
lindex list01 1

4.llen,求列表长度

llen list01

5.lrem key

删N个value
lrem list01 2 1   在list01中删除21

6.ltrim key

ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2    截取list01 从02的数据在赋值给list01

7.rpoplpush  list1 list2  将list1中最后一个压入list2中第一位

lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2

8.lset key index value

lset list01 0 x     将list02中第一位换成x

9.linsert key before/after

linsert list01  before x php  在x之前加字段php

3、redis-Hash

hash是一个键值对集合
hash是一个string类型的fieldvalue的映射表,hash特别适合存储对象
哈希.gif
1.hset/hget/hmset/hmget/hgetall/hdel

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id 
hmset customer id 11 name juran age 26
hmget customer id name age      只返回相应的值
hgetall   customer              返回全部
hdel user id   删除id

2.hlen

求哈希长度 
hlen customer

3.hexists key

hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0

4.hkeys/hvals

返回哈希表 key 中的所有域。
hkeys students
返回哈希表 key 中所有域的值。
hvals students

4、redis-set(不重复的)

Set(集合)
setstring类型的无序集合
集合.gif

1.sadd/smembers/sismember

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3  去掉重复添加
smembers set01   得到set01
sismember set01 1  如果存在返回1  不存在返回0

2.scard

scard ---- 获取集合里面的元素个数
scard set01

3.srem key value

srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01   3已经被删除掉

4.srandmember key

srandmembe ---- 随机出几个数
sadd set02  1 2 3 4 5 6 7 8
srandmember set02  2

5.spop key

spop ---- 随机出栈
spop set01

6.smove key1 key2

sadd set03 x y z 
smove set01 set03 2  将set01中的2 移动到set03中

5、redis-Zset

Zset(有序集合)
有序集合.gif

1.zadd/zrange

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 
带分数返回   withscores

2.zrangebyscore key start end

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70zrangebyscore zset01 60 (90   表示不包含90zrangebyscore zset01  60 90  limit  1 2    [1,3]区间取值 下标

3.zrem key

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1

4.zcard/zcount key score 区间/zrank key values

zcard   求zset01 总条数
zcount  zset01 60 9060-90个数
zrank   zset01  v2   返回1  返回对应下角标,从0开始

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

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

相关文章

HarmonyOS4.0系统性深入开发10卡片事件能力说明

卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 接口定义:postCardAction(component: Object, action: Object): void 接口…

建模杂谈系列236 Block Manager

说明 很久没有写了,总是写一半就没空往下写。这次正好有个单独的主题,可以写一下。 内容 1 块的分配 数据应该怎么切分和管理?这没有一个固定的答案,在我的实践中,我觉得一个块(Block)一万条记录是比较合理的。然后…

Android App从备案到上架全过程

不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改…

docker实战:安装redis

目录 1、查看可用的版本2、拉取最新版的镜像3、查看本地镜像4、运行容器5、测试redis 服务6、清理容器 1、查看可用的版本 使用 docker search命令可以查看容器的可用版本,使用–limit可以设置输出的结果数量 [rootlocalhost docker]# docker search redis NAME …

文本分类应用到工作实践

日常工作中会用到文本分类,如果量比较少人工分类一下也可实现,但是准确率不是很高。如果量多就需要用到NLP相关功能。直接上代码实践。 运行环境:python3 paddlepaddle2.5.0 加载数据集 # 加载当前数据集 cd /home/aistudio/data/data238254/安装组件 # 安装组件 pip ins…

Debezium发布历史41

原文地址: https://debezium.io/blog/2018/10/04/debezium-0-9-0-alpha2-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.9.0.Alpha2 发布 2018 年 10 月 4 日 作者&#xff1a…

191.【2023年华为OD机试真题(C卷)】亲子游戏(DFS和BFS—JavaPythonC++JS实现)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】亲子游戏(DFS和BFS—…

Python使用余弦相似度比较两个图片

为了使用余弦相似度来找到与样例图片相似的图片,我们需要先进行一些预处理,然后计算每两张图片之间的余弦相似度。以下是一个简单的实现: 读取样例图片和目标文件夹中的所有图片。对每张图片进行预处理,例如灰度化、降噪等。计算…

『OPEN3D』1.12 RGBD三维重建

目录 一、流程准备 1、数据集准备 2、重建参数配置 3、代码运行 二、代码解析</

shell case判断的实际应用

简介 case语句是一种多路分支结构&#xff0c;用于根据变量的值来判断执行不同的命令。作用与 if 有着异曲同工之妙&#xff0c;在某些地方比 if 可能更加好用&#xff0c;这里就介绍一些 case 的用法与实践&#xff0c;if 的详细方法见另一篇文章&#xff1a;shell if判断的应…

我的机器学习起步如何Getting Started

学习技巧和原则 先通过经典书籍进行科普知名机器学习网站根据书籍或网站的目录&#xff0c;先泛读、再选择有兴趣的部分重点精读、后至于反复读知行合一 起步Getting Started 周志华版《机器学习》&#xff0c;又名西瓜书 可以作为科普书籍&#xff0c;需要主动略过对于理论…

27、web攻防——通用漏洞SQL注入Tamper脚本Base64Jsonmd5

文章目录 数字型&#xff1a;0-9。http;//localhost:8081/blog/news.php?id1 字符型&#xff1a;a-z、中文&#xff0c;需要闭合符号。http;//localhost:8081/blog/news.php?idsimple 搜索型&#xff1a;在字符型的基础上加入了通配符%。http;//localhost:8081/blog/news.…

问界M9激光雷达解说

什么是激光雷达 激光雷达(英文:Lidar),是一种通过发射激光束来测量目标位置、速度等特征量的雷达系统。其工作原理是将激光光束照射到目标物体上,然后通过测量激光光束从发射到反射回来的时间,来计算目标物体的距离、位置、速度等参数。激光雷达通常用于测量地形、地貌、…

js常用事件演示

为什么要使用js事件&#xff1a; JavaScript事件是非常重要的&#xff0c;因为它们提供了与用户交互和处理用户操作的能力。以下是一些使用JavaScript事件的原因&#xff1a; 交互性&#xff1a;使用JavaScript事件可以实现各种交互功能&#xff0c;例如点击按钮、移动鼠标、按…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的&#xff0c;特别是儿童青少年眼睛还在发育的状态来说&#xff0c;光线是至关重要的&#xff0c;于是这次测评就不能马虎&#xff0c;必须要本着专业严谨的态度进行测评&#xff0c;这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

超维空间S2无人机使用说明书——53、进阶版——添加滤波后使用PID算法进行基于yolo的目标跟踪

引言&#xff1a;为了提高识别效果&#xff0c;采用递推均值滤波的算法对图像返回的识别准确度和位置信息进行处理&#xff0c;在实际应用过程中有着不错的表现。本小节内容是在52小节的基础上进行优化&#xff0c;可以先参考52小节&#xff0c;在此基础上再参考此处代码即可。…

LeetCode刷题--- 第 N 个泰波那契数

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

男女婚姻配对中若男孩有金钱和长相帅气是容易成功的因素分析

男女婚姻配对中若男孩有金钱和长相帅气是容易成功的因素分析。 男人想要脱离单身主要考虑哪些因素、提升哪些方面。 首先&#xff0c;你要清楚&#xff0c;女人喜欢什么&#xff0c;你和她能长久在一起的概率是多少&#xff1f; 直白的说&#xff0c;女人&#xff0c;就是喜欢…

算法通关村第二十关-黄金挑战图的常见算法

大家好我是苏麟 , 今天聊聊图的常见算法 . 图里的算法是很多的&#xff0c;这里我们介绍一些常见的图算法。这些算法一般都比较复杂&#xff0c;我们这里介绍这些算法的基本含义&#xff0c;适合面试的时候装*&#xff0c;如果手写&#xff0c;那就不用啦。 图分析算法&#xf…

【软件体系结构】软件体系结构风格

5.1 软件体系结构风格概述 多年来&#xff0c;人们在开发某些类型软件过程中积累起来的组织规则和结构&#xff0c;形成了软件体系结构风格。 软件体系结构风格&#xff0c;是总结人们设计经验而形成结构较为巩固、组织较为统一的形式&#xff0c;是一种适合于多种场合的相似…