Redis入门(一)

2023-11-13

第1章 NoSQL

1.1 NoSQL数据库

1.1.1 NoSQL是什么

(1)NoSQL(Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
(2)NoSQL不拘泥于关系型数据库的设计范式,放弃了通用的技术标准,为某一领域特定场景而设计,从而使性能、容量、扩展性都达到了一定程度的突破。

1.1.2 NoSQL的特点

(1)不遵循SQL标准
(2)不支持ACID
(3)远超于SQL的性能。

1.1.3 NoSQL的适用场景

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

1.1.4 NoSQL的不适用场景

(1)需要事务支持
(2)基于sql的结构化查询存储,处理复杂的关系,需要即席查询。
(3)用不着sql的和用了sql也不行的情况,请考虑用NoSql

1.2 NoSQL家族

1)Memcached
(1)很早出现的NoSQL数据库
(2)数据都在内存中,一般不持久化
(3)支持简单的key-value模式,数据类型支持单一
(4)一般是作为缓存数据库辅助持久化的数据库
2)Redis
(1)几乎覆盖了Memcached的绝大部分功能
(2)数据都在内存中,支持持久化(写到磁盘),主要用作备份恢复
(3)支持丰富的数据类型,例如 string 、 list 、 set、zset、hash等
(4)一般是作为缓存数据库辅助持久化的数据库
缓存:临时存储
假如有很多客户端对MySQL进行每秒1000W次查询,MySQL肯定扛不住这么高的并发请求【性能有上限】,将MySQL的数据同步到Redis中,让先请求客户端对Redis先进行查询,如果没有就查询MySQL然后同步到Redis中,后面的客户端就可以对Redis进行查询!Redis 每秒100W ops,性能非常强大!
3)mongoDB
(1)高性能、开源、模式自由的文档型数据库(网页中的XML JSON数据)
(2)数据都在内存中,如果内存不足,把不常用的数据保存到硬盘
(3)虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
(4)支持二进制数据及大型对象
(5)可以根据数据的特点替代RDBMS(关系数据库管理系统),成为独立的数据库。或者配合RDBMS,存储特定的数据
4)HBase
(1)Hbase是Hadoop项目的数据库,主要用于对大量数据进行随机、实时的读写操作.
(2)Hbase能支持到数十亿行 × 百万列的数据表
5)Cassandra
(1)Cassandra用于管理由大量商用服务器构建起来的庞大集群上的海量数据集(PB级)
6)Neo4j
(1)Neo4j是基于图结构的数据库,一般用于构建社交网络、交通网络、地图等

第2章 Redis简介

2.1 Redis官网

(1)Redis官方网站 http://Redis.io
(2)Redis中文官方网站 http://www.Redis.net.cn(山寨网站)
在这里插入图片描述
Redis也可以做流式引擎(不过大数据领域一般选择kafka)以及消息中间件

2.2 Redis是什么

(1)Redis是一个开源的key-value存储系统。 不用建库也不用建表
(2)它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set)和hash(哈希类型)。
(3)Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件 支持持久化
(4)支持高可用和集群模式。

2.3 Redis的应用场景

2.3.1 配合关系型数据库做高速缓存

(1)高频次,热门访问的数据,降低数据库IO
(2)经典的Cache Aside Pattern(旁路缓存模式)
在这里插入图片描述

2.3.2 大数据场景

1)缓存
(1)高频次
(2)读写时效性高
(3)总数据量不大
(4)临时性
(5)用key查询
在这里插入图片描述
2)数据库
(1)高频次写入
(2)高频次查询
(3)总数据量不大,且对丢失数据不敏感
在这里插入图片描述

2.3.3 利用其多样的数据结构存储特定的数据

(1)最新N个数据  通过List实现按自然事件排序的数据
(2)排行榜,TopN  利用zset(有序集合)
(3)时效性的数据,比如手机验证码 Expire过期
(4)计数器,秒杀  原子性,自增方法INCR、DECR 防止超卖!
(5)去除大量数据中的重复数据 利用set集合
(6)构建队列利用list集合
(7)发布订阅消息系统  pub/sub模式

第3章 Redis安装

3.1 关于Redis版本

不用考虑在Windows环境下对Redis的支持,Redis官方没有提供对Windows环境的支持,是微软的开源小组开发了对Redis对Windows的支持 很多(淘宝 微信等)后台都是Redis

3.2 安装

1)安装新版gcc编译器(大部分数据库都是C语言编写,需要gcc)
在102机器安装Redis就在102上安装gcc

[aa@hadoop102 ~]$ sudo yum -y install gcc-c++ 

2)上传redis-6.2.1.tar.gz安装包到/opt/software目录下
3)解压redis-6.2.1.tar.gz到/opt/module目录下 (跟着视频来,老师解压到software)

[aa@hadoop102 software]# tar -zxvf redis-6.2.1.tar.gz -C /opt/module/

tar -zxvf redis-6.2.1.tar.gz 解压到当前目录

4)之后进入安装包的src目录,编辑Makefile文件,修改软件安装路径如下:

[aa@hadoop102 src]$ vim Makefile

#修改如下

PREFIX?=/home/aa
[aa@hadoop102 src]$ make && make install

在这里插入图片描述

3.3 查看安装目录 /home/aa/bin

(1)Redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何(服务启动起来后执行)
(2)Redis-check-aof:修复有问题的AOF文件
(3)Redis-check-dump:修复有问题的RDB文件
(4)Redis-sentinel:启动Redis哨兵服务
(5)redis-server:Redis服务器启动命令
(6)redis-cli:客户端,操作入口
在这里插入图片描述

3.4 Redis的启动

1)拷贝一份redis.conf配置文件到工作目录

[aa@hadoop102 ~]$ mkdir myredis
[aa@hadoop102 ~]$ cd myredis
[aa@hadoop102 myredis]$ cp /opt/module/redis-6.2.1/redis.conf .

2)绑定主机IP,修改bind属性

[aa@hadoop102 myredis]$ vim redis.conf
bind 0.0.0.0

3)指定配置文件进行启动 启动服务端

[aa@hadoop102 myredis]$ redis-server redis.conf

在这里插入图片描述

3.5 客户端访问

1)使用redis-cli 命令访问启动好的Redis,默认端口为6379

[aa@hadoop102 myredis]$ redis-cli 
127.0.0.1:6379> 
  • 服务端关闭:1 在redis服务端CTRl+C 2 优雅关机,客户端执行shutdown
    2)如果有多个Redis同时启动,或者端口做了修改,则需指定端口号访问
[aa@hadoop102 myredis]$ redis-cli -p 6379
127.0.0.1:6379>

3)如果访问非本机redis,需要指定host来访问

[aa@hadoop102 myredis]$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>

4)通过 ping 命令测试验证

127.0.0.1:6379> ping
PONG

windows的Redis客户端进行访问
在这里插入图片描述
在这里插入图片描述

3.6 关闭Redis服务

如果还未通过客户端访问,可直接 redis-cli shutdown
[aa@hadoop102 myredis]$ redis-cli shutdown
如果已经进入客户端,直接 shutdown即可.

127.0.0.1:6379> shutdown

Jps是看不到redis的相关进程! Jps是java process status

3.6.1查看redis进程 ps -ef | grep redis

在这里插入图片描述
杀死进程!

kill -9 6463
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis入门(一) 的相关文章

  • WSL Redis 遇到系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法操作[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试遵循本文中讨论的 Redis 安装过程article https www digitalocean com community
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • 使用 NoSQL 文档存储数据库有哪些实际用例?

    在过去的几天里 我一直在阅读文档并观看特定于 Mongo DB 的截屏视频 我不知道像这样的解决方案何时会比典型的 pg 或 mysql 环境更好 具体来说 我的问题是在什么情况下 有用例就很好 你会选择 nosql 路线 Thanks 许
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何批量删除Redis中数十万个带有特殊字符的key

    我们有一个包含数十万个 Redis 键的列表 其中包含各种特殊字符 我们希望批量删除它们 对于这个问题上的类似问题 有一些很好的答案 如何使用 Redis 自动删除与模式匹配的键 https stackoverflow com questi
  • Apache Cassandra 如何进行聚合操作?

    总的来说 我对 Apache Cassandra 和 nosql 相当陌生 在 SQL 中 我可以执行聚合操作 例如 SELECT country sum age count AS averageAge FROM people GROUP
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 在 NoSQL 存储中存储图像

    我们的应用程序将通过 HTTP 提供大量缩略图大小的小图像 大小约为 6 12KB 我被要求调查使用 NoSQL 数据存储是否是一个可行的数据存储解决方案 理想情况下 我们希望我们的数据存储是容错且分布式的 在 NoSQL 存储中存储 bl
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • 有没有办法在 ruby​​ 中重新定义 []=+

    我正在尝试编写一个简单的 DSL 针对 Redis 并且我想自己定义 I have def key val redis zadd name val key end 我想定义 def key val redis zincrby name va
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • StackExchange.Redis的正确使用方法

    这个想法是使用更少的连接和更好的性能 连接会随时过期吗 对于另一个问题 redis GetDatabase 打开新连接 private static ConnectionMultiplexer redis private static ID
  • 在 mongodb 和 nodejs 中对博客和评级进行建模

    我有一个博客集合 其中包含用户给予的标题 正文和综合评分 另一个集合 评级 其架构引用了博客 以对象 ID 的形式对博客进行评级 如果有的话 的用户以及他们给出的评级 即 1 或 1 当特定用户按照 最新优先 的顺序浏览博客时 比如每页 4
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • Amazon Elasticache Redis 集群 - 无法获取端点

    我需要获取 Amazon Elasticache 中 Redis 集群的终端节点 以下代码适用于 Memcached 集群 但不适用于 Redis import com amazonaws auth AWSCredentials impor

随机推荐