redis 非关系型数据库

redis 非关系型数据库,缓存型数据库。

关系型数据库和非关系型数据库的区别

关系型数据库是一个机构化的数据库,行和列。

列:声明对象

行:记录对象属性。

表与表之间是有关联,使用sql语句,来对指定的表,库,进行增删改查。

在创建表时,我们是设计好了表的结构。按照表结构来存储数据。数据与表结构不匹配,存储数据,会失败。

非关系型数据库:nosql not only sql

不需要定义库,也不需要定义表的结构,直接记录即可,而且每条记录都可以由不同的数据类型,字段(字段个数)

redis key:value 建值对形式存储。每个键之间没有之间关联。库与库之间相互独立。

区别:

1,数据的存储方式不同。

2,扩展方式,性能上的提升。关系型数据库靠的是提升本机的性能。非关系型数据库,可以横向扩展,加入节点服务器的方式提高性能。

3,对事务的支持性,mysql支持事务。(原子性,隔离性,一致性,持久性)

非关系型数据库也支持事务,但是稳定性和处理能力都不如关系型数据库。

非关系型数据库的主要场景:

1,操作的扩展性

2,海量数据处理

web2.0:交互。

纯动态网站的三高问题:

1,对数据库高并发读写的需求。

2,对海量数据高效存储与访问的需求。

3,对数据库的高可扩展性与高可用性的需求。

数据库缓存:

web页面缓存

cpu和硬盘之间缓存

常见的缓存需求场景

关系型数据库:

库----表---行,列----->存储数据

非关系型数据库:

库----集合----->保存键值对

他不需要是手动的创建库和集合。

redis:开源的,使用c语言编写的NQL数据库。

redis:基于内存运行,支持持久化(数据恢复)。采用的就是key-value(键值对)的存储形式。目前在分布式架构中,非常重要的一环。

redis服务器程序,是一个单进程模式,即只有一个主进程工作。也就是说在一台服务器上可以启动多个redis(端口号不能冲突)

redis的实际处理速度是完全依靠主进程的执行效率。

服务器只部署了一个redis进程,多个客户端访问,可能会导致redis的处理能力下降

如果部署了多个redis进程,虽然能提高redis的并发处理能力,但是会给服务器的cpu带来很大的压力。

一台服务器,一般部署3个redis进程。(根据情况来看,高并发,要部署多个。一般情况,单进程足够了)

redis的特点:

1,具有极高的读写速度,数据读取每秒110000次,写入数据每秒可执行81000的写入。

2,支持丰富的数据类型。

3,支持持久化。平常的数据都是保存在内存中,持久化可以写入到磁盘中,即可以保存到本地,也可以实现备份。

4,原子性,所有的操作都是原子性

5,支持主从模式---master-slave模式。

redis为什么这么快?应届 面试题

1,redis是纯内存结构,避免了磁盘I/O的耗时

2,核心模块是一个单进程,减少了线程切换和回收线程的时间。

3,I/O的多路复用机制。每一个执行线路,都可以同时读和写。高并发的效率大大提升。

特殊说明:redis的读写,仍然是单进程处理。

redis的服务控制命令:

/etc/init.d/redis_6379 status 状态

/etc/init.d/redis_6379 restart 重启

redis的命令工具:

redis-server:直接启动redis,只能启动

redis-benchmark:检测redis在本机的运行效率

redis-cil:命令行工具

redis-check-aof:检测AOF文件是否正常

redis-check-rdb:检测rdb文件是否正常

redis-benchmark:

-h:指定服务器的主机名 IP地址

-p:指定服务器的端口号

-c:指定并发连接数

-n:指定请求数。

redis-benchmark -h 192.168.176.80 -p 6379 -c 100 -n 10000 连接请求测试

redis-benchmark -h 192.168.176.80 -p 6379 -q -d 100 存取数据包的能力

redis-benchmark -t set,lpush -n 100000 -q 测试性能

一,如何进入redis

1,redis-cli -h 192.168.176.80 -p 6379 登录指定

-h 指定IP地址

-p 指定端口号

-a 指定登录密码

2,redis-cli 仅限于本地,远程登录还是要指定IP地址

二,redis的数据类型:

五大数据类型:

1,string(字符串):也是redis的最基本的类型,最大能存储512MB的数据,可以存储任何数据,数字,图片,文字,等等。

keys * :查看所有键值

*:表示所有

?:表示后面任意一位

创建键值: set test chen

读取键值:get test

修改键值 set test 10

判断键值对是否存在

exists test

1:存在 0:不存在

删除:del test

如何查看对应键值对的类型

type test

拼接字符串

没有,直接输入,显示当前长度

有,拼接字符串返回所有长度

append test1 hello

直接查看长度:strlen test1

incr test 递增1

decr test 递减1

只能改数字

incrby test 10 增加10

decrby test 10 减10

设置键值对生命周期:

setex test2 15 lo

ttl test2 查看键值对的生命周期

(integer)-2:结束

-1:表示永不过期

修改生命周期

expire test 30

创建多个:

mset key1 hello key2 world

打印多个:MGET key1 key2

2,list 数据类型

列表

创建列表

倒叙插入

lpush chen a b c 1 2 3

正序插入:

rpush cg 1 2 3 4

以下标查看:

lrange chen 0 -1

lindex chen 0 查看第0个

添加:

在前面添加:

lpushx cg 10

在后面添加

rpushx cg 5

删除:

lpop cg 删除第一个

rpop cg 删除最后一个

修改下标为3的元素

lset cg 3 shuai

在指定元素前后进行插入

linsert chenc before 3 10

linsert chenc after 3 11

三,hash类型:

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

创建:

hset cc tall yes

查看:

hget cc tal

添加新字段:

hset cc handsan yes

打印多个

hmget cc tall handsan

删除:

hdel cc tall

一次性设置多个字段

hmset chc tall yes age 21 ah 阿斯顿

中文会显示乱码

打印:

hmget chc tall age ah

直接查看全部键字段名,值

hgetall chc

分开查看

键字段名:hkeys chc

键值:hvals chc

删除:del cg

四,set 数据类型(无序集合)

元素类型也是string,元素是唯一的,不允许重复。多个集合类型可以进行并集。交集和差集运算。

set当中的元素类型是唯一的,可以跟踪一些唯一性数据。访问微博的用户名。只要把对应名称写入redis,set集合可以自动保存唯一性,保证下次访问

flushall 删除redis所有库

创建 (重复的不算)

sadd myset a a c

查看:

smembers myset

查看集合有没有指定元素

sismember myset c

1,存在 0,不存在

添加元素:

sadd myset b d e f

移除

随机移除:

srandmember myset

spop myset

指定移除:

srem myset a c

五,有序集合:元素类型也是string,元素唯一不能重复。

每个元素都会关联一个double(小数点)的分数(score,表示权重)可以通过权重的大小。进行排序。元素的权重可以重复

zset

在线积分的排行榜,可以实时更新用户的分数。zrange命令获取积分top10的用户。zrank命令通过username来获取用户的排行信息。

创建:

zadd myzset 1 one

添加:

zadd myzset 2 two 3 three

查看

加withscores 才显示权重

zrange myzset 0 -1 withscores

查看元素的排名:

zrank myzset one

查看集合有多少元素

zcard myzset

统计权重范围之内元素的个数:

zcount myzset 1 3

删除成员

zrem myzset three

查看元素权重:

zscore myzset two

set和hset 创建普通类型和hash类型,怎么选择?

一般情况下,如五特殊需求,普通的创建方式即可

对一个键进行多字段存储,节省内存,使用hash方式。

如何对key进行重命名

rename test chen

查看当前库中的键值对数:

dbsize

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

数字排名:0-15

切换库

select 1

把当前库移到其他库中

move test 1

如何给库创建密码:

config set requirepass 123456

再次进入不加密码看不了数据

在内进入

auth 123456

在外进入加 -a 123456

redis-cli -h 192.168.176.71 -p 6379 -a 123456

如何情况库数据

flushdb:情空当前库(不要用,慎用)

flushall:清空全部库(不要用,慎用)

总结:

redis的特点:读写速度快。

数据类型:

1,string

2,list

3,hash 对一个键进行多字段存在要用hash节省空间

4,无序集合 set 元素不能重复,可以用来定义唯一值

5,有序集合 zset,元素不能重复,但是权重可以相同,用来排名

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

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

相关文章

Oracle 存储过程数据插入临时表慢以及SQL语句查询慢

/*parallel*/ 解释: 一般表数据量比较大(超过100万)时,可以使用parallel强制启动并行度来提升查询速度 用法:/*parallel(table_short_name,cash_number)*/ 可以加到insert、delete、update、select的后面来使用 比如&#xff…

Linux:安装MySQL服务(非docker方式)

1、下载安装包 下载MySQL安装包,需要Oracle官网的账号 下面是网友提供的账号及密码,亲测有效。 账户:3028064308qq.com 我用的这个,可以登陆 密码:OraclePassword123!Oracle Account: 602205528qq.com Oracle Pass…

计算机毕业设计选题推荐-掌心办公微信小程序/安卓APP-项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

分形简单版

我的代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N1000; int n; char s[N][N]; void work(int x) {if(x1) {s[0][0]*;return;}work(x-1);for(int i0;i<(1<<x-2);i)for(int j(1<<x-2);j<(1<<x-1);j) s[i][j]s[i][j-(…

Java的IO流-打印流

打印流 PrintStream public void println&#xff08;&#xff09;自动换行 PrintWriter package com.itheima.println;import java.io.FileInputStream; import java.io.PrintStream; import java.io.PrintWriter;public class Test2 {public static void main(String[] arg…

【Linux】第十九站:进程替换

文章目录 一、单进程版---最简单的程序替换二、进程替换的原理三、多进程的程序替换1.多进程的程序替换实例2.那么程序在替换时候有没有创建子进程呢3.再谈原理4.一个现象5.我们的CPU如何得知程序的入口地址&#xff1f; 四、各个接口的介绍1.execl2.execlp3.execv4.execvp5.ex…

【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能

1 WebSocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 1.1 HTTP协议和WebSocket协议对比 1、HTTP是短…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(六)

新增菜品 1.1 需求分析与设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 2.2 代码开发2.2.1 文件上传实现2.2.2 新增菜品实现 2.3 功能测试 1.1 需求分析与设计 1.1.1 产品原型 后台系统中可以管理菜品信息&#xff0c;通过 新增功能来添加一个新的菜品&#xff0c;在添加菜品…

Ubuntu 下C++数字雨

以前写过一个Window下的数字雨&#xff0c;像黑客帝国里那样的01数字&#xff0c;现在补充一版Linux下的。使用了curses库&#xff0c;安装方法与使用方法参照 Linux下curses函数库的详细介绍_libcurses库-CSDN博客 5-linux学习笔记之-----curses-CSDN博客 效果如下&#xf…

拜托!佛系点,你只是给社区打工而已

社区人到年底了各种要写的东西很烦啊&#xff01;突然看到这个&#xff0c;真的谢谢啊&#xff01; 家人们谁懂啊&#xff1f;&#xff01;&#xff01;平时写个东西起码两三天&#xff0c;试了一下这东西&#xff01;输入需求&#xff0c;一键生成&#xff0c;写好了&#xf…

webpack快速上手之搭建cesium三维地球环境

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 Cesium介绍 初始化一个Cesium地球 ​编辑 Webpack的使用 Webpac…

汽车ECU的虚拟化技术初探(三)--U2A虚拟化辅助功能分析1

目录 1.基本概述 1.1 U2A虚拟化辅助功能 1.2 U2A虚拟化使能和资源分配 2. U2A架构概述 3. CPU运行模式 3.1 虚拟化模式 3.2 限制运行模式 3.3 权限运行模式 3.4 CPU运行模式小结 4.小结 1.基本概述 1.1 U2A虚拟化辅助功能 在汽车ECU的虚拟化技术初探(二)-CSDN博客中…

文心一言 VS 讯飞星火 VS chatgpt (139)-- 算法导论11.4 3题

三、用go语言&#xff0c;考虑一个采用均匀散列的开放寻址散列表。当装载因子为 3/4 和 7/8 时&#xff0c;试分别给出一次不成功查找和一次成功查找的探查期望数上界。 文心一言&#xff1a; 在开放寻址法中&#xff0c;当散列表的装载因子超过其阈值时&#xff0c;会触发重…

15.ORACLE11g的归档方式和日志文件的相关操作

ORACLE11g的归档方式和日志文件的相关操作 一、什么是日志文件1、在线日志文件2、归档日志文件 二、Oracle 11g 归档方式&#xff1a;1、归档方式状态2、归档日志方式下数据库的工作原理3、配置归档日志方式3.1 开启归档模式3.2 日志文件相关操作&#xff1a; 4、oracle11g联机…

七、文件包含漏洞

一、文件包含漏洞 解释&#xff1a;文件包含漏洞是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行&#xff1b;其还能够使得服务器上的源代码被读取&#xff0c;在PHP里面我们把可重复使用的函数写入到单个文件中&#x…

【Linux】线程互斥

文章目录 线程互斥互斥量 mutex初始化互斥量加锁与解锁 可重入和线程安全常见的线程安全情况常见的线程安全的情况常见的不可重入情况常见的可重入情况可重入与线程安全联系可重入与线程安全区别 死锁死锁的四个必要条件避免死锁 线程互斥 进程线程间的互斥相关背景概念 临界…

深度学习:欠拟合与过拟合

1 定义 1.1 模型欠拟合 AI模型的欠拟合&#xff08;Underfitting&#xff09;发生在模型未能充分学习训练数据中的模式和结构时&#xff0c;导致它在训练集和验证集上都表现不佳。欠拟合通常是由于模型太过简单&#xff0c;没有足够的能力捕捉到数据的复杂性和细节。 1.2 模型…

API接口测试工具为什么尤其重要

在现代软件开发中&#xff0c;API接口测试工具扮演着关键的角色&#xff0c;连接不同的软件组件&#xff0c;实现数据传递和功能调用。为确保API的可靠性、安全性和性能&#xff0c;此工具成为不可或缺的一部分。本文将介绍API接口测试工具的重要性! 1. 自动化测试的效率 API接…

2023数维杯数学建模C题完整版本

已经完成全部版本&#xff0c;获取请查看文末下方名片 摘要 随着人工智能在多个领域的快速发展&#xff0c;其在文本生成上的应用引起了广泛关注。本研究聚焦于辨识人工智能&#xff08;AI&#xff09;生成文本的基本规则&#xff0c;并探究AI文本的检测及其与人类文本的区分…

哪些软件可以监控电脑(保姆级教程!值得收藏!)

今天了解到了一个软件&#xff0c;真的把我吓到了。 我才知道原来我上班时摸鱼时多么愚蠢的一件事情。原来老板可以通过一些软件轻而易举的知道你用电脑做的所有事情&#xff0c;怪不得我每次摸鱼时老板看我的眼神都不对…… 安装好域之盾软件以后&#xff0c;打开就能监控你使…