Redis(非关系型数据库)

Redis(非关系型数据库)

文章目录

    • Redis(非关系型数据库)
    • 认识Redis(Remote Dictionary Server)
      • 1.Redis的基本介绍
      • 2.Redis的应用场景
        • 2.1 取最新N个数据的操作
        • 2.2 排行榜应用,取TOP N操作
        • 2.3 需要精准设定过期时间的应用
        • 2.4 计数器应用
        • 2.5 Uniq 操作,获取某段时间所有数据排重值
        • 2.6 实时系统,反垃圾系统
        • 2.7 缓存
      • 3.Redis的特点
    • Redis单机环境安装
      • 1. Windows版Redis安装
      • 2.Linux版Redis安装(运维)
        • 2.1下载redis安装包
        • 2.2 解压redis压缩包到指定目录
        • 2.3 安装C程序运行环境
        • 2.4 安装较新版本的tcl
        • 2.5 编译redis
        • 2.6 启动redis
        • 2.7 关闭redis
        • 2.8 连接redis客户端
      • 3.Redis Desktop Manager
      • Redis的数据类型
        • 1.对字符串string的操作
        • 2.对hash列表的操作
        • 3.对list表的操作
        • 4.对set集合的操作
        • 5.对key的操作
        • 对ZSet的操作-重要(热搜)

SQL:关系型数据库

  • 1.结构化(Structured)
    在这里插入图片描述

  • 2.关联的(Relational)
    在这里插入图片描述

  • 3.SQL查询
    SELECT id,name,age from tb_user WHERE id=1

  • 4.事务ACID(原子性,一致性,隔离性,持久性)

NoSQL:非关系型数据库

  • 1.非结构化
    在这里插入图片描述

  • 2.无关联的
    在这里插入图片描述

  • 3.非SQL
    get user:1
    在这里插入图片描述

  • 4.BASE
    总结
    在这里插入图片描述

NoSQL数据库

memcache
很早出现的NoSql数据库
数据都在内存中,一般不持久化
支持简单的key-value模式
一般是作为缓存数据库辅助持久化的数据库
redis介绍
几乎覆盖了Memcached的绝大部分功能
数据都在内存中,支持持久化,主要用作备份恢复
除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset
等。
一般是作为缓存数据库辅助持久化的数据库
现在市面上用得非常多的一款内存数据库
mongoDB介绍
高性能、开源、模式自由(schema free)的文档型数据库
数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
支持二进制数据及大型对象
可以根据数据的特点替代RDBMS,成为独立的数据库。或者配合RDBMS,存储特定的数据
列式存储HBase介绍
HBase是 **Hadoop** 项目中的数据库。它用于需要对大量的数据进行随机、实时读写操作的场
景中。HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过 10 亿行数
据,还可处理有数百万列元素的数据表。

认识Redis(Remote Dictionary Server)

远程词典服务器,是基于内存的键值型NoSQL数据库
特征:

  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存,IO多路复用,良好的编码)。
  • 支持数据持久化
  • 支持主从集群,分片集群
  • 支持多语言客户端
    redis官网地址:
    https://redis.io/ (https://redis.io/)
    中文网站
    http://www.redis.cn/ (http://www.redis.cn/)

1.Redis的基本介绍

Redis是当前比较热门的NoSQL系统之一
它是一个开源的、使用ANSI C语言编写的 key-value 存储系统(区别于MySQL的二维表格
形式存储)
和Memcache类似,但很大程度补偿了Memcache的不足,Redis数据都是缓存在计算机 内
存 中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表
示,一断电或重启,内存清空,数据丢失

2.Redis的应用场景

2.1 取最新N个数据的操作

比如典型的取网站最新文章,可以将最新的 5000 条评论ID放在Redis的List集合中,并将超出集合部分从数据库获取

2.2 排行榜应用,取TOP N操作

这个需求与上面需求的不同之处在于,前面操作以时间为权重,
这个是以某个条件为权重,
比如按顶的次数排序,可以使用Redis的sorted set,将要排序的
值设置成sorted set的
score,将具体的数据设置成相应的value,每次只需要执行一条
ZADD命令即可。

2.3 需要精准设定过期时间的应用

比如可以把上面说到的sorted set的score值设置成过期时间的时
间戳,那么就可以简单地通
过过期时间排序,定时清除过期数据了,不仅是清除Redis中的
过期数据,你完全可以把
Redis里这个过期时间当成是对数据库中数据的索引,用Redis
来找出哪些数据需要过期删
除,然后再精准地从数据库中删除相应的记录。

2.4 计数器应用

Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命
令来构建计数器系统。

2.5 Uniq 操作,获取某段时间所有数据排重值

这个使用Redis的set数据结构最合适了,只需要不断地将数据往
set中扔就行了,set意为集合,所以会自动排重。

2.6 实时系统,反垃圾系统

通过上面说到的set功能,你可以知道一个终端用户是否进行了
某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。

2.7 缓存

将数据直接存放到内存中,性能优于Memcached,数据结构更
多样化。

3.Redis的特点

  • 高效性(内存)
Redis读取的速度是30w次/s,写的速度是10w次/s
原子性 (主逻辑线程是单线程)
Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
pipline
  • 支持多种数据结构
string(字符串) a->b 配置 color--> red
list(列表) a->list 消息队列 msg--->["hello","ydlclass","itlils"]
hash(哈希) a->map 购物车 1----->["1"=>"剃须刀",“2”=>“电脑”]
set(集合) a->set 去重 quchong-->["北京",“山西”,“河北“]
zset(有序集合) a->sorted set 排行榜 top10->[”xx拿了金牌,10“,"跑路了,9.5"]
稳定性:持久化,主从复制(集群)
其他特性:支持过期时间,支持事务,消息订阅。

Redis单机环境安装

1. Windows版Redis安装

Windows版的安装比较简单,解压Redis压缩包完成即安装完
毕,安装的注意事项:
解压的目录不要有中文
目录结构层次不要太深
硬盘空间剩余空间最少要大于你的内存空间,建议20G以上
Redis 目录结构:
在这里插入图片描述

Redis服务启动与关闭

1、启动服务器:cmd redis-server.exe redis.windows.conf
2、默认端口号:6379
3、关闭服务器:直接关闭窗口

在这里插入图片描述

运行[redis-cli.exe]客户端
在这里插入图片描述

如何开机自启Redis
我们需要进入到你安装的Redis的目录中,通过DOS命令
redis-server --service-install redis.windows-service.conf --loglevel verbose
启动报错1067的话,在刚才redis的目录下新建文件夹Logs然
后再次启动即可。
我的电脑-管理-服务-Redis-右键启动
中文乱码
redis-cli --raw

2.Linux版Redis安装(运维)

2.1下载redis安装包

服务器执行以下命令下载redis安装包

cd /export/software
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
2.2 解压redis压缩包到指定目录

执行以下命令进行解压redis

cd /export/software
tar -zxvf redis-6.2.6.tar.gz -C
2.3 安装C程序运行环境

执行以下命令安装C程序运行环境

yum -y install gcc-c++
2.4 安装较新版本的tcl
使用压缩包进行安装
执行以下命令下载tcl安装包
cd /export/software
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
解压tcl
tar -zxvf tcl8.6.1-src.tar.gz -C ../server/
进入指定目录
cd ../server/tcl8.6.1/unix/
./configure
make && make install
2.5 编译redis
cd /export/server/redis-6.2.6/
#或者使用命令 make 进行编译
make MALLOC=libc
make test && make install PREFIX=/export/server/redis-6.2.6

修改redis配置文件

cd /export/server/redis-6.2.6/
mkdir -p /export/server/redis-6.2.6/log
mkdir -p /export/server/redis-6.2.6/data
vim redis.conf
# 修改第61行
bind localhost
# 修改第128行 后台
daemonize yes
# 修改第163行
logfile "/export/server/redis-6.2.6/log/redis.log"
# 修改第247行
dir /export/server/redis-6.2.6/data
2.6 启动redis
cd /export/server/redis-6.2.6/
bin/redis-server redis.conf
2.7 关闭redis
bin/redis-cli -h localhost shutdown
2.8 连接redis客户端
cd /export/server/redis-6.2.6/
bin/redis-cli -h localhost

3.Redis Desktop Manager

一款基于Qt5的跨平台Redis桌面管理软件,支持:Windows
7+、Mac OS X 10.10+、
Ubuntu 14+,特点: C++ 编写,响应迅速,性能好。
1 下载地址:http://docs.redisdesktop.com/en/latest/install/#windows
安装客户端,连接Redis服务:
在这里插入图片描述

备注说明:Redis Desktoo Manager老版本免费,新版本收费

Redis的数据类型

redis当中一共支持五种数据类型,分别是:
string字符串
list列表
set集合
hash表
zset有序集合
通过这五种不同的数据类型,可以实现各种不同的功能,也可以
应用在各种不同的场景。
所有操作看官网:
或者符合过人阅读习惯:https://www.runoob.com/redis/redis-keys.html

1.对字符串string的操作

在这里插入图片描述

1 设置值 获取值
set ydlclass value
get ydlclass
2 mset mget 一次性操作多组数据
mset ydlclass value ydlclass1 value1 ydlclass2 value2
mget ydlclass ydlclass1 ydlclass2
3 没有这个键我们才设置
setnx dlclass value
4 将key的值 加一,减一
incr stock
decr stock
5设置 a值存活时间5秒,值是b 验证码
setex a 5 b
2.对hash列表的操作

Redis hash 是一个string类型的field和value的映射表,hash特
别适合用于存储对象。
Redis 中每个 hash 可以存储 2的32 - 1 键值对(40多亿)
下表列出了 redis hash 基本的相关命令:
在这里插入图片描述

1设置值 获取值
hset user username zhangsan
hset user age 18
hget user username
2批量
hmset user1 username itnanls age 19
3获取所有的键值对
hgetall user
4获取所有小key
hkeys user
5获取所有值
HVALS user
6删除
hdel user age
3.对list表的操作

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添
加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2的32 - 1 个元素 (4294967295, 每个列
表超过40亿个元素)。
下表列出了列表相关的基本命令:
在这里插入图片描述

1 设置值
lpush list1 1 2 3 4 1
rpush list1 6
2查看数据
lrange list1 0 -1
3 移除数据
lpop list1
rpop list1
4.对set集合的操作
  1. Redis 的 Set 是 String 类型的无序集合。集合成员是
    唯一的,这就意味着集合中不能出现重复的数据
  2. Redis 中集合是通过哈希表实现的,所以添加,删
    除,查找的复杂度都是 O(1)。
  3. 集合中最大的成员数为 2的32 - 1 (4294967295, 每个
    集合可存储40多亿个成员)。
    在这里插入图片描述
1添加数据
sadd set1 1 2 3 4 5
2获取数据
smembers set1
3获取成员数量
scard set1
4业务 uv 当天登陆用户数
sadd uv:20220222 001 002 003 002
scard uv:20220222
5.对key的操作

在这里插入图片描述

1删除
del user1
2查看所有的key
keys * 生产环境下,别用
3存在key
exists user1
4存活时间
expire ydlclass 5
5剩余存活时间 登陆续期
pttl user1
6随机获取 key
randomkey
对ZSet的操作-重要(热搜)
  1. Redis有序集合和集合一样也是string类型元素的集合,
    且不允许重复的成员
  2. 它用来保存需要排序的数据,例如排行榜,一个班的
    语文成绩,一个公司的员工工资,一个论坛的帖子
    等。
  3. 有序集合中,每个元素都带有score(权重),以此来
    对元素进行排序
  4. 它有三个元素:key、member和score。以语文成绩为
    例,key是考试名称(期中考试、期末考试等),
    member是学生名字,score是成绩。
    在这里插入图片描述
1添加
zadd pv 100 page1.html 200 page2.html 300 page3.html
2查看
zcard pv
3查询指定权重范围的成员数
ZCOUNT pv 150 500
4增加权重
ZINCRBY pv 1 page1.html
5交集
ZADD pv_zset1 10 page1.html 20 page2.html
ZADD pv_zset2 5 page1.html 10 page2.html
ZINTERSTORE pv_zset_result 2 pv_zset1 pv_zset2
6成员的分数值
ZSCORE pv_zset page3.html
7 获取下标范围内的成员。 排序,默认权重由低到高
ZRANGE pv 0 -1
8获取由高到低的几个成员(reverse)使用最多的
效率很高,因为本身zset就是排好序的。
ZREVRANGE key start stop

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

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

相关文章

threejs中变换相关的知识点总结

一, 前言 在threejs的使用过程中经常会遇到需要移动旋转缩放之类的变换的情况,而可以实现这一目的的方法也有很多,如: translate,scale,rotateX,applyMatrix4,position.set,rotateOnWorldAxis… 等等, 很多方法可供选择。有的是作用在geometry上的, 有的是作用在me…

回归分析笔记

回归分析 回归分析: 寻找两个或多个变量之间的函数关系(相关关系) 一元和线性 y β 0 β 1 x ε \begin{aligned} y&\beta_0\beta_1x\varepsilon\\ \end{aligned} y​β0​β1​xε​ 误差项 ε \varepsilon ε是一个期望值为0的随机变量,即 E ( ε ) 0 …

mysql 23-2day 数据库查询(DQL)

目录 数据库查询(DQL)环境:准备一个表格作为查询环境查看数据根据要求查看数据运算查询as 可以修改字段名字 进行查询查询所有部门拼接两个字段查询 2017年入职的员工一个是空null 一个是空白查询 NULL集合排序查询查看有那些组通配符正则查询函数 数据库查询(DQL) …

如何搭建Web自动化测试框架?

在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的…

Java---泛型讲解

文章目录 1. 泛型类2. 泛型方法3. 泛型接口4. 类型通配符5. 可变参数6. 可变参数的使用 1. 泛型类 1. 格式&#xff1a;修饰符 class 类名 <类型>{ }。例如&#xff1a;public class Generic <T>{ }。 2. 代码块举例&#xff1a; public class Generic <T>{…

防火墙双机热备(HCIA)

目录 一、冗余分类 1、双机热备的产生 2、热备和冷备 二、VRRP VRRP注意事项 VRRP通告报文 三、VGMP 两种VGMP组 VGMP优先级 四、HRP 五、双机热备基本组网与配置 配置步骤 一、冗余分类 物理冗余&#xff1a;单设备改多设备&#xff0c;多线路连接。 网络冗余&a…

ssm420基于JavaEE的企业人事管理信息系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本企业人事管理信息系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

【2023年网络安全优秀创新成果大赛专刊】银行数据安全解决方案(天空卫士)

在2023年网络安全优秀创新成果大赛&#xff0c;成都分站中&#xff0c;天空卫士银行数据安全方案获得优秀解决方案奖。与此同时&#xff0c;天空卫士受信息安全杂志邀请&#xff0c;编写《银行数据安全解决方案》。12月6日&#xff0c;天空卫士编写的《银行数据安全解决方案》做…

山西电力市场日前价格预测【2023-12-23】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-23&#xff09;山西电力市场全天平均日前电价为505.77元/MWh。其中&#xff0c;最高日前电价为807.08元/MWh&#xff0c;预计出现在08:15。最低日前电价为332.81元/MWh&#xff0c;预计…

类文件结构

类文件结构 回顾一下字节码 在 Java 中&#xff0c;JVM 可以理解的代码就叫做字节码&#xff08;即扩展名为 .class 的文件&#xff09;&#xff0c;它不面向任何特定的处理器&#xff0c;只面向虚拟机。Java 语言通过字节码的方式&#xff0c;在一定程度上解决了传统解释型语…

数据分析基础之《numpy(4)—ndarry运算》

一、逻辑运算 当我们要操作符合某一条件的数据时&#xff0c;需要用到逻辑运算 1、运算符 满足条件返回true&#xff0c;不满足条件返回false # 重新生成8只股票10个交易日的涨跌幅数据 stock_change np.random.normal(loc0, scale1, size(8, 10))# 获取前5行前5列的数据 s…

《A++ 敏捷开发》-1 如何改善

1 如何改善 敏捷开发过程改进案例 5月 A公司一直专门为某电信公司提供针对客服、线上播放等服务。 张工是公司的中层管理者&#xff0c;管理好几个开发团队&#xff0c;有5位项目经理向他汇报。 他听说老同学的团队都开始用敏捷开发&#xff0c;很感兴趣&#xff0c;便参加了…

Zookeeper集群搭建,四字命令监控,Leader选举原理以及数据如何同步

Java学习面试指南&#xff1a;https://javaxiaobear.cn 1、集群角色 Leader&#xff1a; 领导者。 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保证集群事务处理的顺序性&#xff1b;集群内部各个服务器的调度者。对于create、setData、delete…

抖店怎么运营?走通流程是关键!

我是电商珠珠 很多新手在入驻抖店的时候&#xff0c;都不知道前期怎么去运营。 运营的技巧很多&#xff0c;牵扯到很多细节&#xff0c;跑通流程是关键。 所以&#xff0c;今天就来给大家讲讲抖店的几个基本流程&#xff0c;只有将流程跑通了才能去更快的抠细节上的东西。 …

Jenkins自动化构建打包,部署

1.环境准备 上传jdk&#xff0c;maven和tomcat的包&#xff0c;解压到/usr/local下并配置环境变量。 配置jdk [rootserver04 ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/java export PATH$JAVA_HOME/bin:$PATH##加载环境变量 [rootserver04 ~]# source /etc/profi…

elementui - table中下拉进行验证

<template><!-- 巡查计划 - 新增巡查点位 --><el-dialog :visible.sync"dialogShow1" title"新增巡查点位" width"800" top"15vh" closehandleCancle><el-form :model"ruleForm" ref"ruleForm&qu…

C语言--指针深入理解--题目篇

C语言--指针深入理解--题目篇 1. sizeof 与 strlen 比较1.1 sizeof1.2 strlen1.3 数组名的意义 2. 数组和指针笔试题解析&#xff08;均以x86环境为例&#xff09;2.1 ⼀维数组2.2 字符数组2.3 二维数组 3. 指针运算笔试题解析 1. sizeof 与 strlen 比较 1.1 sizeof sizeof 计…

FPGA未解之谜

一.ila一会能加载出波形&#xff0c;一会加载不出波形——在自己做的v7开发板中遇到&#xff0c;其他开发板从未遇到过 1.小梅哥说&#xff1a;可能与硬件jtag连接不稳定导致。

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结&#xff1a; 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

【Linux笔记】网络操作命令详细介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 前言&#xff1a; 网络操作是Linux系统中常见的任务之一&#xff0c;它涵盖了测试网络连接、配置网络接口、显示网络统计信息以及远程登录和文件传…