Java-49-redis

1. 什么是 NoSQL

NoSQL(Not Only SQL)是一类非关系型数据库管理系统,旨在处理大规模数据存储和高并发请求。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,NoSQL 数据库不使用固定的表结构,而是使用灵活的数据模型,如键值对、文档、列族或图形等。NoSQL 数据库通常用于处理大数据、实时分析和分布式存储。

2. NoSQL 和 DBMS 的区别

  • 数据模型

    • 关系型数据库(DBMS):使用表格形式存储数据,数据之间通过外键关联,通常遵循 ACID(原子性、一致性、隔离性、持久性)原则。
    • NoSQL:支持多种数据模型(如键值、文档、列族、图形等),通常不强制使用固定的模式。
  • 扩展性

    • 关系型数据库:通常是垂直扩展(增加单个服务器的性能)。
    • NoSQL:通常是水平扩展(通过增加更多服务器来分担负载)。
  • 查询语言

    • 关系型数据库:使用 SQL 进行查询。
    • NoSQL:通常使用自定义的查询语言或 API。

3. 常用的 NoSQL 产品

  • MongoDB:文档型数据库,使用 BSON 格式存储数据。

  • Cassandra:列族型数据库,适合处理大数据和高可用性需求。

  • Redis:键值存储数据库,支持多种数据结构。

  • Couchbase:文档型数据库,提供强一致性和高性能。

  • Neo4j:图数据库,适合处理复杂的关系数据。

4. 什么是 Redis

Redis 是一个开源的高性能键值存储数据库,支持多种数据结构,如字符串、哈希、列表、集合和有序集合。它通常被用作缓存、消息代理和会话存储等场景。Redis 以其快速的读写性能和丰富的数据结构而闻名。

5. Redis 的优点

  • 高性能:Redis 在内存中操作数据,读写速度极快。
  • 丰富的数据结构:支持字符串、哈希、列表、集合等多种数据结构。
  • 持久化:支持数据持久化,可以将内存中的数据保存到磁盘。
  • 支持分布式:可以通过 Redis Cluster 实现数据的分布式存储和负载均衡。
  • 简单易用:提供了简单易用的 API,方便开发者进行操作。

6. 安装 Redis

Redis 的安装步骤因操作系统而异。以下是基于 Linux 的基本安装步骤:

6.1 准备环境

1.安装redis需要的环境。yum install -y gcc-c++
2.上官网下载redis源码安装包。 ---
redis-5.0.8.tar.gz

6.2 安装

1.将安装包放入centos并解压
2. 进入解压后的目录
cd redis-7.2.3

3.编译安装

make install
配置了环境变量。 

6.3启动redis服务器

redis-server redis.conf
安装redis.conf这个配置来启动redis服务.

6.4客户端连接redis服务器

redis-cli -h redis服务器的ip -p 端口号
-h: 如果不写默认127.0.0.1
-p: 如果不写默认6379

6.5 安装图形化客户端

最新native可以

最新idea可以

redisplus等

1.防火墙端口放行 2. 允许远程连接 3. 保护机制没有关闭

7. 使用 Redis

使用 Redis 主要通过命令行界面(CLI)或客户端库进行操作。以下是一些基本的 Redis 操作示例:

  • 连接到 Redis

    redis-cli
  • 设置键值对

    SET key "value"
  • 获取键值

    GET key
  • 删除键

    DEL key
  • 使用数据结构

    • 列表

      LPUSH mylist "item1" RPUSH mylist "item2" LRANGE mylist 0 -1 # 获取所有元素
    • 哈希

      HSET myhash field1 "value1" HGET myhash field1
    • 集合

      SADD myset "member1" SMEMBERS myset

7.1 key操作的命令

keys *:查看所有的key
del key ...: 删除指定的key
expire key second: 为指定的key设置过期时间
exists key: 判断指定的key是否存在

7.2 数据库的命令

select n:选择库 
flushdb: 清空当前库
flushall: 清空所有库。

7.3 redis支持的数据类型

redis命令手册

redis支持的数据类型种类很多,其中使用最频繁的: String字符串,Hash,List队列,Set集合,ZSet有序集合等。

7.3.1 字符串类型。

表示里面的value的类型为字符串类型。默认可以存放512M大小的字符串内容。

常用:

1. set key value: 存放字符串类型的数据 
2. get key: 获取指定key对应的value值。
3. setex key second value: 存放字符串类型的数据并设置过期时间。
4. setnx key value: 如果指定的key存在,则不设置。不存在则存入。
5. incr key: 为指定的key递增 
6. decr key: 为指定的key递减

7.3.2 Hash类型

表示value值为Hash数据类型。 表示value又是key-value形式。

常用:

1. hset key field value: 存储哈希类型的数据
2. hget key field: 获取存在哈希表中指定字段的value值
3. hgetall key: 获取在哈希表中指定key的所有字段和值
4. hkeys key: 获取所有哈希表中的字段
5. hvals key: 获取哈希表中所有的值
6. hexists key field:查询哈希表key中,指定的字段是否存在

7.3.3 list类型

list表示列表类型,表示value的值为list类型。

常用:

1. lpush key value value ....: 将一个或多个值插入到列表的头部。
2. lrange key start end: 获取列表指定范围内的元素
3. linsert key before|after element value: 在列表元素前或后插入元素
4. lpop key: 移除并获取列表中的第一个元素
5. lset key index value: 修改指定下标的值

1 set集合

无序 不可重复的集合。

1. sadd key element element ...:向集合添加一个或多个成员
2. smembers key: 返回集合中的所有成员.
3. srem key : 移除集合中一个或多个成员
4. sinter key key..: 返回给定所有集合的交集.

3.2 zset集合

有序 元素不允许重复的集合。 有序跟属性score有关。

1. zadd key score value score value score value: 向有序集合添加一个或多个成员,或者更新已存在成员的分数
2.zrange key start end: 通过索引区间返回有序集合成指定区间内的成员
3.zrevrange key start end: 返回有序集中指定区间内的成员,通过索引,分数从高到底

4. redis的使用场景

  1. ==热点数据的缓存。==

  2. ==限时任务的操作。比如短信验证码==

  3. ==完成session共享的问题。==

  4. ==完成分布式锁。==

  5. 商品的销售量。

5. redis的持久化方式

5.1 什么是持久化

把内存中的数据存储到磁盘的过程。同时也可以把磁盘中的数据加载到内存中。

5.2 redis实现持久化的方式

redis实现持久化的方式提供了两种:

第一种:RDB

第二种:AOF

5.2.1 什么是RDB

RDB[redis database]: 快照模式。每隔一段时间对内存中的数据进行快照存储。 默认启用该模式

5.2.2 什么时候会触发RDB模式

1.手动触发:save和bgsave手动触发rdb。 保存的名称dump.rdb

save该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:

执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave:

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

bgsave在执行该命令时会fork出一个新的线程,单独执行rdb持久化操作,而不影响其他客户对redis服务的操作。---唯一的多线程。

2.自动触发: 通过配置文件搞定。

需要修改配置文件

#10秒改变5次 或50秒50次改变

save 10 5 50 50

5.2.3 什么是Aof

AOF[append only file]: 日志[每执行一个写操作]追加模式,默认redis没有开启该模式。需要手动开启。默认的文件名appendonly.aof

5.2.4 开启aof

把配置文件中的appendonly yes即可

当启动redis服务器,会把日志文件中的命令从上到下执行一下。

5.2.5 RBD和AOF的区别

  1. RDB快照模式,数据备份和恢复速度快。缺点: 数据完整性差。数据可能丢失多。

  2. AOF日志追加: 数据完整性高。 缺点: 数据备份和恢复速度慢。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值