redis---非关系型数据库

关系数据库与非关系型数据库

redis非关系型数据库,又名缓存型数据库。
数据库类型:关系型数据库和非关系型数据库
关系型数据库是一 个机构化的数据库,行和列。
列:声明对象。
行:记录对象属性。
表与表之间的的关联。
sql语句,对指定的表,库,进行增删查改。
在创建表时,我们是设计好了表的结构。按照表结构来存储数据。数据与表结构不匹配,存储数据,会失败。


非关系型数据库:nosql not only sql
不需要定义数据库,也不需要定义表的结构,直接记录即可,而且每条记录都可以有不同的数据类型,字段(字段个数)
redis key:values 键值对形式储存。每个键之间没有直接关联,库与库之间相互独立。

关系型非关系区别
1、数据的储存方式不同。

关系型数据库:库---------->表----------->行、列------------>存储数据

非关系型数据库:库--------->集合---------->键值

2、扩展方向:性能上的提升。关系型数据库靠的是提升本机性能。非关系型关系型数据库可以横向扩展,加入节点服务器的方式提高性能。
3、对事物的支持性,mysql支持事务。
关系型数据库:原子性、隔离性、一致性、持久性
非关系型数据库:也可以支持事务,redise也可以支持事务,但稳定性和处理能力都不如关系型数据库。

非关系型数据的主要场景: 1、操作的扩展
                                          2、海量数据处理

纯动态网站的三高问题:
1、对数据库高并发读写的需求。
2、对海量数据高效存储与访问的需求。
3、对数据库的高扩展性与高可用的需求。

redis非关系型数据库

数据库缓存:

ab85b3cbac974f4dbcd48de88b616dee.png

redis的工作特点:

redis服务器程序是一个单进程模式,即只有一个主进程工作。也就是说在一台服务器上启多个redis(端口号不能冲突)
redis的实际处理速度是完全依靠主进程的执行效率。

服务器只部署了一个redis进程,多个客户端访问,可能会导致redis的处理能力下降
如果部署了多个redis进程,虽然能提高redis的并发处理能力, 但是会给服务器的cpu带来很大的压力。
一台服务器,一般部署3个redis进程。(更具情况来看,高并发要部署多个。)一般的情况,单进程足够)
 

redis的特点:

1、具有极高的读写速度,数据读取每秒110000次,写入数据每秒81000次写入。
2、支持丰富的数据类型。
3、支持持久化。平常的数据保存在内存中,持久化可以写入磁盘中,既可以保存在本地,也可以实现备份。
4、原子性,所有的操作都是原子性
5、支持数据主从模式------master slave模式

rdis为什么这么快?

1、redis纯内存结构,避免了磁盘I/O的耗时
2、核心模块是一个单进程,减少了线程切换和回收线程的时间。
3、redis采用的是I/O多路复用的机制,一条执行线路可以执行读也可以执行写,高并发。
***特殊说明:redis的读写,依旧是单进程处理。

redis部署

yum install -y gcc gcc-c++ make
cd /opt/
将包拖到opt下
tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7/
make -j 4 
make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
---第四个回车后---
/usr/local/redis/bin/redis-server

ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
70行 加本机ip

redis的服务控制命令:

/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 status
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start

查看端口是否启动成功

ss -antp | grep redis

32581a03bd0a47fa9c830cd70fa72a8a.png

redis的命令工具:

redis-server:直接启动redis,只能启动
redis-benchmark: 检测redis在本机的运行效率
redis-cli:命令行工具
redis-check-aof: 检测AOF文件是否正常
redis-check-rdb: 检测rdb文件是否正常

redis-benchmark

-h指定服务器的主机名 ip地址
-p指定服务器的端口号
-c指定并发连接数
-n指定请求数
-a指定登陆密码

进入redis命令
1、redis-cil -h 192.168.10.80 -p6379
2、redis-cli 仅限制本地使用,远程访问需要指定ip和端口

redis的五大数据类型

1、 string(字符串)

string是redis最基本的类型,最大能存储512MB的数据,可以存储任何数据

格式:

创建    set 键名 键的值

0a904d8f083a429e80380c74e2105cc2.png

删除     del 键名

ce1846df8e1544a0826addf77baa2917.png

查看键值对的值    get 键名

44196111ccf54748bfd7556813edd2dd.png

查看所有键值对    keys * 

模糊查询?(表示单个字符)         *(多个字符)

查看键名生命周期:ttl 键名(秒)

3e69ffbcdb43454fbf3e79ff84bd3cf6.png

APPEND 有则拼接,无则创建输入

                APPEND 键名 键值

2a0ccd0e748c4dda91dc3f739895a056.png

EXISTS 

fec577f8a3d1422aaebf8fbabc687d68.png

STRLEN 标记长度

        STRLEN 键名

fcf761c9538f4d69aac3c84af61d9c3b.png

INCR   自增一        INCR 键名(只针对数字类型)

12f2a93e0cf441ad9517f88835f78afe.png

DECR  自减一        DECR 键名(只针对数字类型)

9595d684c0794682a9bcb8b8eb718e82.png

incrby 键值对 数值

40775d9e33684f7e9d0ae7c6bf65037f.png
decrby 键值对 数值

8b97ad31fbbd44cc9aa94c31b055bfaf.png

EXPIRE 对已有键值对设置生命周期

EXPIRE 键值对名 周期时间

1075e4aeb75147bba67a485973ac7b3a.png
(integer) -1 表示永不过期
(integer) -2 表示已过期

新建时声明键值对的声明周期

setex 键名 生命周期时间 内容

7a072c07c66e4aea8772c35ec4f1d29f.png

mset 键名1  值  键名2  值
mset key1 hello key2 world
#批量设置键
 
keys *
#查看键
 
mget 键名1 键名2
mget key1 key2
#同时打印多个键的值

2、list数据类型

正序查看:RPUSH test1 a b c 1 2 3

倒叙查看:LPUSH test a b c 1 2 3

#创建列表 后面时内容,但是当中的元素还是string类型

192.168.10.80:6379> LPUSH test a b c 1 2 3 
(integer) 6
192.168.10.80:6379> lrange test 0 -1
1) "3"
2) "2"
3) "1"
4) "c"
5) "b"
6) "a"
192.168.10.80:6379> LINDEX test 0
"3"
192.168.10.80:6379> LINDEX test 1
"2"
192.168.10.80:6379> RPUSH test1 a b c 1 2 3
(integer) 6
192.168.10.80:6379> lrange test1 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
192.168.10.80:6379> LINDEX test 0
"3"
192.168.10.80:6379> LINDEX test1 0
"a"
192.168.10.80:6379> LPUSH test 1 2 3 4 5 6
(integer) 6
192.168.10.80:6379> LINDEX test -1
"1"
192.168.10.80:6379> LINDEX test 0
"6"
192.168.10.80:6379> LINDEX test 1
"5"
192.168.10.80:6379> LINDEX test 2
"4"
192.168.10.80:6379> LINDEX test 3
"3"
192.168.10.80:6379> LINDEX test 4
"2"
192.168.10.80:6379> 

list操作命令

lpush quoqi a b c d 12 13
#创建列表 后面时内容,但是当中的元素还是

lrange 键名 0 -1
#查看列表中的数据(倒叙)

lindex 键名 0
#根据索引下标打印数据

lindex 键名 索引号
#根据索引下标打印数据

rpush 键名 1 2 3 4
#创建列表正序查看 从右到左 从右-1开始自增

lrange 键名 0 -1
#正序查看

lrange 键名 1 2
#指定范围查看

RPUSHX test 值
#在test其右侧加入一个值

LPUSH test 值
#在test其左侧加入一个值



lpop  键名
lpop guoqi1
#从左边开始删
 
lrange guoqi1 0 -1
#范围查看键值对内部的值
 
rpop  键名
rpop guoqi1
#从右边开始删
 
lrange guoqi1 0 -1
 
llen  键名
llen guoqi1
#查询列表内的元素
 
lindex  键名  索引下标
lindex guoqi1 3
#指定索引下标查询
 
lrange guoqi1 0 -1
 
linsert 键名   before 索引下标范围
linsert guoqi1 before 3 10
#在指定位置前插入数据
 

3、hash类型

        hash类型用于存储对象,采用hash格式来进行操作。占用磁盘少,而且占用一个hash可以占用4294967295个键值对

创建:HSET 键名 字段 值
查看:HGET 键名 字段
创建多个:HSET 键名1 字段1 值2 字段2 值 字段3 值3
查看多个:HMGET 键名 字段1 字段2
查看所有字段:HGETALL 键名
删除:HDEL 键名 字段1 字段2
192.168.10.80:6379> HSET test tall 150
(integer) 1
192.168.10.80:6379> HGET test tall
"150"
192.168.10.80:6379> HMSET test age yes sex nan
OK
192.168.10.80:6379> HMGET test tall age sex
1) "150"
2) "yes"
3) "nan"
192.168.10.80:6379> HGETALL test
1) "tall"
2) "150"
3) "age"
4) "yes"
5) "sex"
6) "nan"
192.168.10.80:6379> HDEL test age
(integer) 1
192.168.10.80:6379> HGETALL test
1) "tall"
2) "150"
3) "sex"
4) "nan"
192.168.10.80:6379>

4、set数据类型

        无序集合元素类型也是string,元素是唯一的,不允许重复。多个集合类型可以进行并集。交集和差集运算.
set 元素类型是唯一的,可以跟踪一些唯一性的数据。只要把对应名称redis,set 可以

创建:SADD 集合名 
查看:SMEMBERS 集合名
随机给出一个元素:SRANDMEMBER 集合名
随机移除一个元素:SPOP 集合名
指定移除:SREM 集合名

5、有序集合

        有序集合,元素类型也是string,元素唯一,不能重复,每个元素都会关联一个double (小数点)的分数(score,表示权重)可以通过权重的大小,进行排序。元素的权重可以相同。
zset:可以应用到在线积分的排行榜,可以实时更新用户的分数。

创建:
ZADD 集合名 权重1 元素1  权重2 元素2  权重3 元素3
ZADD test1 1 one 2 two 3 three

查看+权重:
ZRANGE 集合名 0 -1 WITHSCORES                   WITHSCORES安照权重来排序
ZRANGE test1 0 -1 withscores

查看不加权重:
ZRANGE 集合名 0 -1
ZRANGE test1 0 -1

获取成员数量:
ZCARD 集合名
ZCARD test1

获取成员数量权重范围 
ZCOUNT 集合名 权重范围
ZCOUNT test1 2 3

删除集合元素        
ZREM 集合名 元素
ZREM test1 three

查看元素权重 
ZSCORE 集合名 元素
ZSCORE test1 two

操作过程

192.168.10.80:6379> ZADD test1 1 one 2 two 3 three
(integer) 3
192.168.10.80:6379> ZRANGE test1 0 -1
1) "one"
2) "two"
3) "three"
192.168.10.80:6379> ZRANGE test1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
192.168.10.80:6379> ZCARD test1
(integer) 3
192.168.10.80:6379> ZCOUNT test1 2 3
(integer) 2
192.168.10.80:6379> ZREM test1 three
(integer) 1
192.168.10.80:6379> ZRANGE test1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
192.168.10.80:6379> ZSCORE test1 two
"2"
192.168.10.80:6379> 

查询redis库

redis的库都是创建好的,有16个库

数字排名:0-15

每个数据库之间互相独立,互不干扰

select [0-15]
#切换库 

dbsize
#查看当前库中键的数量

keys *
查看键


move 键名  库的序号
MOVE test1 1

查看键的类型
type 键名
192.168.10.80:6379> KEYS *
1) "test"
2) "test1"
192.168.10.80:6379> KEYS *
1) "test"
192.168.10.80:6379> SELECT 1
OK
192.168.10.80:6379[1]> KEYS *
1) "test1"
192.168.10.80:6379[1]> 

密码

设置密码
config set requirepass 密码
config set requirepass 123456

在内声明密码
auth 密码
auth 123456

在外生声明密码
redis-cli -h ip -p 6379 -a 密码
redis-cli -h 192.168.10.80 -p 6379 -a 123456

清除库

FLUSHDB
#清除当前库

FLUSHALL
#清空所有库

总结:

redis读写速度快

数据类型:

1、string
2、list
3、hash 对一个键进行多字段操作用于hash 节省内存空间
4、set 元素不能重复,可以定义唯一值
5、zset 元素不能重复,单权重可以重复

面试题:

rdis为什么这么快?
1、redis纯内存结构,避免了磁盘I/O的耗时
2、核心模块是一个单进程,减少了线程切换和回收线程的时间。
3、redis采用的是I/O多路复用的机制,一条执行线路可以执行读也可以执行写,高并发。
***特殊说明:redis的读写,依旧是单进程处理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

俄罗斯方块摆烂

package 俄罗斯方块;import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import ja…

ZYNQ_project:lcd_pic_400x400

在lcd液晶屏上显示400x400像素的图片, 像素信息通过电脑的串口调试助手,发送给fpga,存储在例化的双端口ram中, 在要显示图像区域,读取ram中的像素信息。 模块框图: 时序图: 代码:…

电脑开不了机怎么办?三招帮你成功解决!

电脑是我们日常工作和生活的重要工具,但有时候它们也会出现开机问题。当电脑无法启动时,可能会让人感到焦虑,电脑开不了机怎么办?不必担心,通常有多种方法可以解决这些问题。本文将介绍三种常见的方法,以帮…

你真的会写简历吗?软件测试简历修改包装...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、简历重要性以及…

《微信小程序开发从入门到实战》学习二十三

前言 之前是先看文章,再敲代码,出现预览效果,最后码字。 现在改变顺序,先直接照着敲代码,再看文章,最后码字。不知道能不能更加内化学习到该书作者教的内容。希望自己不是一味照抄书的代码和内容。 ​3.…

【GitHub】保姆级使用教程

一、如何流畅访问GitHub 1、网易uu加速器 输入网址,无脑下载网易加速器;https://uu.163.com/ 下载安装完毕后,创建账号进行登录 登录后,在右上角搜索框中搜索“学术资源”,并点击; 稍等一会儿就会跳…

微信小程序会议OA-登录获取手机号流程登录-小程序导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties …

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率 PLC通过Modbus转Profinet网关(XD-MDPN100)在恒压供水系统中读取变频器的频率。该系统实时监控逆变器的频率,以确保水的供应能够保持恒定的压力。PLC通过Modbus与变频器通信,将读取的频…

配置中心

服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题: 1. 配置文件相对分散。 在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。 2. 配置文件无…

【excel技巧】单元格内的公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了,但是只要点击单元格,公式就能显示出来,如果不想别人看到公式应该如何设置呢?今天分享隐藏excel单元格数据的方法。 选中单元格,点击右键打开【设置单元格格式】&#x…

深度了解LinkedBlockingQueue底层实现原理

文章目录 前言一、Queue接口的定义二、AbstractQueue实现Queue的基本操作1.AbstractQueue源码注释解析2.方法add、remove、element、clear、addAll的实现原理 三、BlockingQueue接口定义解析1.入列操作2.出列操作3.其他操作 四、LinkedBlockingQueue源码解析1.LinkedBlockingQu…

Python学习(打基础版)

以前只是大致的了解,现在比较完整的整理一下笔记,以后工作可能会用到。 学习地址如下所示:黑马程序员python教程,8天python从入门到精通,学python看这套就够了_哔哩哔哩_bilibili 第一章 环境配置 1 初识Python 人…

Git——感谢尚硅谷官方文档

Git——尚硅谷学习笔记 第1章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心 第2章 Git 安装第 3 章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.4 添加暂存区3.4.1 将工作区的文…

在vue-cli中快速使用webpack-bundle-analyzer

webpack-bundle-analyzer 是一个可视化资源分析工具,可以直观地分析打包出的文件有哪些,及它们的大小、占比情况、各文件 Gzip压缩后的大小、模块包含关系、依赖项等。 从vue-cli官方的更新记录可以看到,从vue-cli3开始集成report命令 当前环…

工业交换机的六种分类

工业交换机可以按照不同的标准进行分类,具体有六种分类方法。我们今天就来简单了解一下这六种分类方法,它们分别是:工业交换机的管理标准、工业交换机的结构标准、工业交换机的网络位置、工业交换机的传输速率、工业交换机的工作协议以及工业…

我觉得Ubuntu上的Ros2与单片机就是这么通讯的

首先Ubuntu上面建立一个功能包pkg ,包里面写一个cpp文件,然后在这个cpp文件里面建立一个node,然后使用这个node去获取单片机从串口传过来的数据。 平时都是使用串口调试助手来收发数据的,好像ros2里面有一个专门搞这个事情的东西叫做 serial库。学一下…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《计及氢电混合动力车响应的多区域综合能源系统协调优化调度》

这个标题涉及到一个复杂的能源系统优化问题,其中考虑了氢电混合动力车的响应。下面是对标题中各个关键词的解读: 多区域综合能源系统: 涉及多个地理区域的综合能源系统,这可能包括电力网络、燃气网络、热能网络等,这些…

基于JAVA+SpringBoot+VUE+微信小程序的前后端分离咖啡小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会的快速发展和…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制商业文案助手

随着智能助手的不断普及和发展,商业文案的创作也变得更加智能化和定制化。在这个信息爆炸的时代,商业文案的撰写已经不再是简单的文字表达,而是需要结合大数据分析和人工智能技术,以更好地满足目标客群的需求。在本文中,我们将介绍如何利用向量数据库Milvus Cloud搭建GPT大…

tokenizers Tokenizer 类

Tokenizer 类 依赖安装 pip install tensorflow pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple基类原型 tokenizers.Tokenizer(model)基类说明 Tokenizer 函数构造一个分词器对象。分词方式主要有word-level、subword-level、char-level三种&#x…