大数据之Redis

NoSQL

  1. SQL数据库泛指关系型数据库
  2. NoSQL不拘泥于关系型数据的设计范式,放弃了通用的技术标准,为某一特定领域场景而设计

NoSQL的特点

  1. 不遵循SQL标准
  2. 不支持ACID
  3. 远超SQL的性能

NoSQL的适用场景

  1. 对数据高并发的读写
  2. 海量数据的读写
  3. 对数据高可扩展性的

NoSQL的不适用场景

  1. 需要事务ACID支持,有自己的事务,但是事务执行失败后不会进行回滚之类的操作。
  2. 基于sql的结构化查询存储,处理复杂的关系,需要即席查询

NoSQL家族

  1. Memcached:不支持持久化,一般是作为缓存数据库,辅助持久化的数据库
  2. Redis:支持持久化,用作备份恢复,支持丰富的类型
  3. mongoDB:文档型数据库
  4. HBase: hadoop项目的数据库,主要用于对大量数据进行随机、实时的读写操作
  5. Neo4j: 图结构数据库

官网

redis.io

Redis是什么

  1. 是一个开源的key-value存储系统
  2. 它支持存储的value类型相对更多,value可以是字符串,链表,set, list, zset和hash类型
  3. 会周期性把更新的数据写入磁盘或者把修改操作写入追加的记录文件
  4. 支持高可用和集群模式

经典使用场景

  1. 旁路缓存模式,承担Mysql的读请求,用来缓存一些热门的读请求数据。
  2. Redis里面的数据有TTL,time to live,适合那些只需短期存储后需要自动删除的数据
  3. 手机验证码,redis缓存设置TTL + 第三方运营商发送短信

显示行号

:set nu

前台改后台启动

  1. vim redis.conf
  2. daemonize yes
  3. 改为后台进程后,ps -ef | grep redis可以用来查看进程是否正常启动
  4. redis-cli 默认是连本机,端口号是6379
  5. redis-cli -h localhost -p 6379 指定主机和端口号
  6. 关闭服务 redis-cli shutdown

key的常用操作

  1. keys * : 查看所有的key
  2. keys k*: 查看所有k开头的key
  3. exists k1: 判断k1是否存在,1存在,0不存在
  4. type l1 : 判断l1的类型
  5. del l1 : 删除l1
  6. expire k1 10 : 设置k1存活10秒钟
  7. dbsize :查看当前库的key的个数
  8. flushdb: 清空当前库

Redis的五大数据类型

String特点及常用操作

  • 特点:存单值对象,二进制安全,可以存对象,一般转为json

  • 常用操作:

    • set k1 v1: 添加
    • get k1 获取
    • append k1 23: 追加
    • setnx k1: 如果不存在则添加
    • strlen k1 : 获取value的长度
    • incr k4 : 自增
    • decr k4 自减
    • incrby k4 步长:增加步长
    • mset k1 k2 k3 v4: 同时设置多个
    • getrange email 9 15 : 取子串
    • setrange email 9 xxxxxx 覆盖子串
    • setex k9 10 : 设置k9的ttl
    • getset: 设置新值,获取新值

List特点及常用操作

  • list特点:单键多值,底层是双向链表;有正向下标和反向下标,可以混合使用。
  • 常用操作
    • lpush l1 v1 v2 v3 v4 v5: 放入元素
    • lrange 0 -1 : 取出所有value
    • lpop: 从左边删除一个值
    • rpop: 从右边删除一个值
    • rpoppush: 从右边删除一个,插入左边
    • lindex
    • llen
    • linsert key before|after : 插入
    • lrem l2 2 aa : 移除两个aa

Set特点及常用操作

  • set特点:无序不重复,提供了判断某个成员是否存在的接口
  • set常用操作:
    • sadd
    • sismember: 判断是否是成员
    • scard key : 删除
    • spop key : 取出并删除一个值
    • srandmemeber key 3: 随机取出几个,不删除
    • sinter k1 k2 : 返回多个集合的交集元素
    • sunion k1 k2: 返回多个集合的并集元素
    • sdiff k1 k2 : 返回多个集合的差集元素

ZSet特点及常用操作

  • 特点:有序Set, 根据排序有序,每个成员关联了一个score,根据score来排序。
  • 常用操作:
    • zadd 添加
    • zrange 正序取
    • zrevrange 倒序取
    • zrangebyscore 取出指定范围的数据
    • zincrby : 指定成员加分
    • zrem : 删除指定成员
    • zcount: 统计指定范围的元素个数
    • zrank 返回指定成员的排名

Hash类型特点及常用操作

  • 特点:键值对类型,支持单独修改每个属性,也支持读取整个元素。

  • 操作

    • 写入: hset
    • 读取: hget / hgetall
    • 修改: hincby
    • 判存:hexists

Jedis

Redis的java客户端,可以通过Java代码的方式操作Redis.

参数配置

  • logfile 路径,配置日志存放地址
  • replication,主从模式配置
  • clients, 配置最大客户连接数,默认10000
  • 内存管理
    • maxmemeory:最大可用内存
    • maxmemory-ploicy:淘汰策略,一般是LRU或者是LFU

Redis持久化

  1. RDB快照备份:将内存中的所有数据持久化到磁盘的一个文件中
    • 数据庞大时比较消耗性能,如果redis意外停机时,会丢失最后一次备份前的数据
  2. AOF日志备份:将所有写操作命令记录在一个日志文件中
    • vim redis.conf中appendonly no,先不修改,如果修改会导致访问redis时得不到任何数据。
    • 如果redis有数据时,使用set appendonly yes, 会发现aof文件大小等于RDB的大小

如何持久化

主进程和副进程使用fork方式来进行的,主进程和副进程之间的数据是可以互通的。

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

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

相关文章

webpack具体实现--未完

1、前端模块打包工具webpack webpack 是 Webpack 的核心模块,webpack-cli 是 Webpack 的 CLI 程序,用来在命令行中调用 Webpack。webpack-cli 所提供的 CLI 程序就会出现在 node_modules/.bin 目录当中,我们可以通过 npx 快速找到 CLI 并运行…

web:NewsCenter

题目 打开页面显示如下 页面有个输入框,猜测是sql注入,即search为注入参数点,先尝试一下 返回空白显示错误 正常显示如下 是因为单引号与服务端代码中的’形成闭合,输入的字符串hello包裹,服务端代码后面多出来一个‘导…

Linux僵死进程及文件操作

1.僵死进程(僵尸进程): 1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进…

哈希和unordered系列封装(C++)

哈希和unordered系列封装 一、哈希1. 概念2. 哈希函数,哈希碰撞哈希函数(常用的两个)哈希冲突(碰撞)小结 3. 解决哈希碰撞闭散列线性探测二次探测代码实现载荷因子(扩容) 开散列哈希桶代码实现扩…

dpkg、apt、rpm、yum、dnf使用

1. yum参数以及使用 yum 命令是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理 RPM 软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一…

Spark_spark shell退出方式

问题描述 在使用Spark Shell进行交互式编程时,如何优雅地退出Spark Shell,即关闭Shell会话,并释放资源。 解决方案 Spark Shell是一个交互式的Spark环境,基于Scala编程语言,可以用于快速开发和调试Spark应用程序。当…

C语言:输入3个整数,按由小到大的顺序输出(指针)

分析: 定义三个整型变量 a、b、c,和三个指向整型变量的指针变量 i、j、k。然后使用 scanf 函数从标准输入(键盘)中读取输入的三个整数,并将它们存储到 a、b、c 中。注意,使用 &a、&b、&c 进行赋…

【GitLab】流水线入门

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

深入理解字符串函数和字符函数(二)

目录 strstr 的使用和模拟实现​ 简单的使用: 复杂情况下的使用 模拟实现strstr函数 用暴力求解的方式: strtok的使用 strerror 函数的使用​ strstr 的使用和模拟实现​ 作用:返回字符串在另外一个字符串中第一次出现的位置,即查找子…

Git 本地服务器搭建 Windows

git 安装参考:Git的安装、配置、使用01【Git Bash Here命令行操作】-CSDN博客 gitLab 服务端安装及配置参考:Windows环境搭建 Gitlab 服务器_gitlab windows_测试工程师成长之路的博客-CSDN博客

奇数求和(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

HMM预习中文版

马尔可夫模型 在之前的笔记中,我们讨论了贝叶斯网络,以及它们如何被用于紧凑地表示随机变量之间的关系。现在,我们将介绍一个与之紧密相关的结构,称为马尔可夫模型,对于本课程的目的,可以将其视为类似于链…

前端量子纠缠 效果炸裂 multipleWindow3dScene

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…

SELinux零知识学习三十七、SELinux策略语言之约束(1)

接前一篇文章:SELinux零知识学习三十六、SELinux策略语言之角色和用户(7) 四、SELinux策略语言之约束 SELinux对策略允许的访问提供了更严格的约束机制,不管策略的allow规则如何。 1. 近距离查看访问决定算法 为了理解约束的用途,先来看一下SELinux Linux安全模块(Lin…

Android : SQLite 增删改查—简单应用

示例图: 学生实体类 Student.java package com.example.mysqlite.dto;public class Student {public Long id;public String name;public String sex;public int age;public String clazz;public String creatDate;//头像public byte[] logoHead;Overridepublic St…

C#文件流FileStream类

目录 一、文件流类 1.FileStream类的常用属性 2.FileStream类的常用方法 3.使用FileStream类操作文件 二、文本文件的写入与读取 1.StreamWriter类 2.StreamReader类 3.示例及源码 三、二进制文件的写入与读取 1.BinaryWriter类 2.BinaryReader类 3.示例源码 数据流…

【NGINX--8】HTTP/2

1、基本配置 想要利用 HTTP/2。 在 NGINX 服务器上启用 HTTP/2: server {listen 443 ssl http2 default_server;ssl_certificate server.crt; ssl_certificate_key server.key;# ... }详解 要启用 HTTP/2,您只需要将 http2 参数添加到 listen 指令即可…

Python面经【6】

Python面经【6】 一、什么是Python的自省机制二、关于Python程序的运行方面,有什么手段可以提升性能三、dict的item()和iteritems()的不同四、说明一个os.path和sys.path分别代表什么五、说一下字典和json的区别六、什么是可变、不可变类型 一、什么是Python的自省机…

探究Kafka原理-7.exactly once semantics 和 性能测试

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请&#x1f44…

python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中,我们已经以钢铁产业产品缺陷检测数据场景为基准,陆续开发构建了多款目标检测模型,感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…