key-value数据库Redis

  • 前言
  • 一、Redis基础掌握
    • 1.1 Redis描述
    • 1.2Redis的特点
    • 1.3 Redis的应用场景
    • 1.4 Redis安装
      • 1.4.1 安装前准备
      • 1.4.2 Redis正式安装
        • ① 打开虚拟机使用xshell连接虚拟机
        • ② 通过xftp将redis的安装包进行上传
        • ③ 解压Redis压缩包
        • ④ 检查Linux系统的c语言环境,并安装
        • ⑤ 启动Redis服务端和客户端
        • ⑥ Redis配置文件
          • :one:基础配置
          • :two:redis持久化配置
          • :three:内存的配置
        • ⑦ Redis内存维护策略
        • ⑧ Redis配置修改
      • 1.4.3 Redis启动
        • ① 后台启动redis服务端
        • ② 启动客户端
      • 1.4.4 Redis的关闭
        • ① 非正常关闭
        • ② 正常关闭:fire::fire:
      • 1.4.5 Redis的外部连接以及GUI图形化工具的使用
        • 解决外部无法连接虚拟机的redis:fire::fire::fire:
  • 二、Redis命令
    • 2.1常用命令Key的管理
    • 2.2 应用场景
    • 2.3 Key的命名建议
  • 三、Redis数据类型
    • 3.1 String类型
      • ① 简介
      • ② String命令
        • 赋值语法
        • 取值语法
        • 删值语法
        • 批量操纵
        • 高级操作
      • ③ String的应用场景
    • 3.2 Hash类型
      • ② Hash命令
        • 赋值语法
        • 取值语法
        • 删值语法
        • 高级操作
      • ③ Hash的应用场景
    • 3.3 List类型
      • ② Hash常用命令
        • 赋值语法
        • 取值语法
        • 删值语法
        • 修改语法
        • 高级操作
    • 3.4 Set类型
      • 简介
      • 命令
        • 赋值语法
        • 取值语法
        • 删值语法
        • 布尔运算
          • 差集语法
          • 并集语法
          • 交集语法
    • 3.5 ZSet类型
      • 简介
      • 命令
        • 赋值语法
        • 取值语法
        • 删值语法

前言

Redis(Remote Dictionary Server ),即远程字典服务,Redis是完全免费开源的,遵守BSD协议,是一个高性能的(NoSQL)的key-value 数据库
2022年各大数据库的排行榜

NoSQL,泛指非关系型数据库,NoSQL即Not-Only SQL。它可以作为关系型数据库的良好补充。随着Web2.0的兴起,非关系型数据库形成了一个极高的新领域,非关系型数据库产品的发展也非常迅速。
在传统的关系型数据库在应付Web2.0网站,特别是超大规模的和高并发的SNS类型的Web2.0,暴露出很多的问题
NoSQL的出现就是为了解决这些问题

一、Redis基础掌握

1.1 Redis描述

redis是个完全开源免费的,是一个高性能的NoSQL的key-value的数据库,redis是一个开源的使用ANSI C语言编写的,支持网络协议,可基于内存亦可持久化的日志型,Key-value数据库。

1.2Redis的特点

  • 性能极高-由于数据是存储在内存中(Redis能读的速度是110000次/s,写的速度是81000次/s)
  • 丰富的数据类型 -redis支持String、 Hash、 Set 、Order set、 List等数据类型
  • 原子性 Redis的所有操作都是原子性的,意思是要么都成功,要么都失败,通过Multi和EXEC来实现
  • 丰富的特性 redis还支持Publiish/subscribe ,通知,key过期等等特性
  • 高速读写 redis用自己实现分离器,代码量少,没有使用lock(MySQL)因此效率很高

Redis 是一个简单的,分布式的,高效的,基于内存的缓存工具。
架构好服务器后,通过网络连接(类似于数据库),组织Key-Value是缓存服务
简单,是Redis突出的特点
简单的保证每个Redis命令都是线程安全的

1.3 Redis的应用场景

  1. 缓存
  2. 排行榜
  3. 计数器
  4. 热点数据

1.4 Redis安装

redis安装目录介绍 目录位置
官网下载安装目录 /opt
普通Redis安装目录 /usr/local/redis
Docker安装 /usr/local/docker/redis
Redis集群安装 redisCluster 6台服务器

1.4.1 安装前准备

官网下载

可以看到目前最新的稳定版本是7,Redis更新相当快,这里我使用的是5版本,> > 官方推荐使用的是Linux系统进行安装

在安装Redis前必须要有一个Linux的操作系统来进行安装。

1.4.2 Redis正式安装

① 打开虚拟机使用xshell连接虚拟机

② 通过xftp将redis的安装包进行上传

我一般习惯于将所有的安装文件统一的上传上opt目录下,在此目录下新建一个文件夹命名为software

③ 解压Redis压缩包

tar -zvxf redis压缩包的名字 -C /opt/software

④ 检查Linux系统的c语言环境,并安装

因为Redis是由C语言编写的,所以我们需要使用c语言的编译环境
首先,我们需要先进入到解压后的redis目录下,然后我们在make使用c语言进行编译

cd /opt/software/redis解压后的文件名
ll -- 查看文件夹下的所有文件
yum install gcc-c++
-- 进入到目录后。执行make编译
make
make install   //确认安装的东西

⑤ 启动Redis服务端和客户端

redis-server /opt/redis安装目录/redis.conf
redis-cli - h ip地址 -p 端口号 [密码]
ps -ef | grep redis --查看redis的服务是否被启动

修改核心配置文件来完成Redis以守护线程的方式来运行

⑥ Redis配置文件

1️⃣基础配置

redis的核心配置文件 redis.conf【默认的目录在etc目录下】

  • daemonize 是用来修改守护线程方式启动的配置属性,默认是no不开启
daemonize yes -- 开启以守护线程的方式启动

  • bind 绑定启动的redis的端口号
    绑定一个本机的ip地址,否则只能在linux虚拟机上进行访问

  • pidfile /var/run/redis_6379.pid 守护线程的进程号

  • port redis启动时的端口号 默认是6379
  • timeout 0 是当客户端闲置多长时间,连接超时 0表示关闭此功能
  • databases 16 redis默认的数据库个数是16个


通过select 数据库的个数来进行选择不同数据库

select 1 -- 选择数据库
2️⃣redis持久化配置
  • save表示redis的持久化操作的时间

  • dbcompress yes 数据库压缩开启,redis默认是开了数据库的压缩的,说明:如果不开启数据库的压缩,会导致数据库因数据量巨大而效率低下

  • 数据库备份文件方式 redis默认的备份持久化策略有两种

1、 RDB策略
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。

rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!

优点:

(1)适合大规模的数据恢复;

(2)对数据的完整性要求不高。

缺点:

(1)需要一定的时间间隔进程操作,如果redis意外宕机了,这个最后一次修改数据就没有了;

(2)fork进程的时候,会占用一定的内存空间。
2、 AOF策略
以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

优点:

(1)每一次修改都同步,文件的完整会更加好;

(2)每次同步一次,可能会丢失一秒的数据;

(3)从不同步,那么效率最高!

缺点:

(1)相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢;

(2)aof运行效率也要比rdb慢,所有我们redis默认的配置就是rdb持久化。

3️⃣内存的配置

指定Redis的最大内存限制,Redis在启动的时候会把数据加载到内存里,达到最大内存,redis会现尝试清除已经到期的或即将到期的

  • maxednonly no
  • appendfileName ,appendly ,id

⑦ Redis内存维护策略

redis作为一款优秀的中间件,时常会存储大量的数据,即使使用了集群的部署方式来动态扩展,也应该及时的整理内存,维护系统的性能。
在redis中有两种解决方式
① 为数据设置过期时间

设置过期时间

expire key time(以秒的单位)--这是最常用的方式
setex(String key,int second,String value) -- 字符串独有的方法
  • 除了字符串自己独有的设置过期时间的方式外,其他方式都需要依靠expire方法来实现
  • 如果没有设置时间,那就缓存就永远不会过期
  • 如果设置了过期时间,之后又想让缓存永不过期,使用persist key

② 采用LRU算法动态的将不用的数据删除

内存管理的一种方式,对于在内存中但又不用的数据块,进行清除

  1. volatile-lru:设置超时时间的数据的算法,删除是最不常用的数据
  2. allkeys-lru:查询所有的key中最近不常用的数据进行删除,这是应用最广泛的策略
  3. volatile-random:在已经设置了超时时间的key中随机删除
  4. allkeys-random:在所有的key中随机删除
  5. noeviction:如果设置为该属性,则不会删除数据
  6. volatile-ttl:从所有的配置了过期时间的建中驱逐使用频率最少的键
  7. allkeys-lfu:从所有的建中驱逐使用频率最少的键

⑧ Redis配置修改

  1. 修改deamonize 为yes 开启守护线程方式启动redis
  2. bind 127.0.0.1 加上bind 192.168.188.129 添加本机的ip地址 允许其他ip也能访问本机的redis服务

1.4.3 Redis启动

① 后台启动redis服务端

-- 后台启动redis服务端
redis-server /opt/redis-5.0.14/redis.conf

② 启动客户端

启动客户端的的方式有很多种

  1. 第一种就是
redis-cli -h --后台默认127.0.0.1启动
  1. 第二种就是指定端口号和ip地址以及密码进行登录
redis-cli -h ip地址 -p 端口号 -a 密码
redis-cli -h 192.168.188.129

没有密码就不需要写-a 密码 ,端口如果没有修改也可以不写
查看redis进程

ps -ef | grep redis

1.4.4 Redis的关闭

① 非正常关闭

先使用ps -ef 继续查看redis的后台进程号,在使用kill -9 进程号来进行关闭redis的服务
注意:但是不建议这样操作。可能会导致reids的数据丢失

ps - ef | grep redis
kill -9 进程号

这种方式相当于是断电操作。如果涉及数据业务的问题,谨慎操作

② 正常关闭

非关系型KV数据库-Redis-01相关推荐

  1. 非关系型数据库-NoSQL(Redis)

    文章目录 一.什么是 NoSQL? 二.NoSQL 的特性? 三.什么是 Redis? 四.Redis 安装部署 4.1 下载安装包 4.2 编译安装 4.3 修改配置文件 4.4 启动服务 4.5 ...

  2. 【Redis :非关系型数据库】

    [Redis :非关系型数据库] 一. 概念 1. Redis 介绍 Redis 是一款高性能的 NOSQL 系列的非关系型数据库 关系型数据库:MySQL.Oracle- 数据存储在表中 数据之间有 ...

  3. 常见非关系型数据库(NoSQL)推荐介绍

    2019独角兽企业重金招聘Python工程师标准>>> 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域, 非关系数据库产品的发展非常迅速.而传统的关系 ...

  4. 数据库(DataBase,DB):关系型数据库 和 非关系型数据库

    1.数据库(DataBase,DB) 数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合,还是以文件的方式存在服务器的电 ...

  5. 常见的关系型数据库和非关系型都有哪些?

    常见的关系型数据库和非关系型都有哪些? 关系型数据库: 关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织. 常见的有:Oracle.DB2.PostgreS ...

  6. 关系型数据库和非关系型数据库的区别以及应用的场景

    关系型数据库: 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库.用户通过查询来检索数据库中的数据 ...

  7. Java后端--25--内存数据库Redis讲解

    一.Redis简介 redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).li ...

  8. 【机房报修管理系统】后端篇(九) 在SpringBoot配置非关系型数据库Redis

    原 [机房报修管理系统]后端篇(九) 在SpringBoot配置非关系型数据库Redis 2019年01月10日 14:18:48 CheungChingYin 阅读数:15 一.前情提要 在上一篇文 ...

  9. Redis相关介绍以及关系型数据库和非关系型数据库

    文章目录 Redis是什么? 支持的数据类型 关系型数据库与非关系型数据库 一.关系型数据库 优点 缺点 数据库 二.非关系型数据库 优点 缺点 数据库 比较 Redis是什么? Redis 是一个开 ...

最新文章

  1. 前紫光展锐CTO创业造芯:主打边缘AI视觉,融资10亿,9个月流片
  2. spring 涉及到注解说明
  3. pkcs#11和Cryptoki的介绍
  4. 2-2. 控制对文件的访问
  5. linux系统编程之进程(七):system()函数使用【转】
  6. serv-u无法自动启动:无法开始服务器!服务器执行缺少
  7. cesium 雷达扫描(附源码下载)
  8. java 反射无参方法_java 反射 调用无参数方法?
  9. 简述sicas计算机联锁的系统结构,《计算机联锁》教学大纲(5页)-原创力文档...
  10. LeetCode(461)——汉明距离(JavaScript)
  11. 前端面试高频考点,ES6知识点汇总!!!
  12. Tomcat免安装版执行tomcat9.exe闪退
  13. OpenCasCade网格的显示
  14. OpenGL基础48:高度贴图(上)
  15. 苹果发布的Mac Pro就是“渣渣”?网友疯狂吐槽
  16. 目标检测数据集:直升机(1)
  17. 关卡 动画 蓝图 运行_虚幻4 UE4 蓝图之关卡蓝图实现自动开关门
  18. python学习之天天向上代码
  19. 两个鸡蛋--一道Google面试题
  20. 对docker一些认知

热门文章

  1. 微软认证一览表(附图)
  2. 定了!考研人务必抓紧!2023考研全程资料免费分享微信大群!全网开启!
  3. SEO是什么?SEO是什么意思?SEO分为两种
  4. JPEG文件格式介绍
  5. 微信小程序 - 小技巧
  6. 怎么建一个新的微信群?微信小技巧
  7. java图书馆自习室找座占座位系统
  8. ReactNative ./gradlew assembleRelease打包失败Duplicate file
  9. android 内置默认输入法
  10. 计算机连接未识别的网络,Win7未识别的网络 Win7系统电脑提示未识别的网络15种解决方法...