Nosql的redis概述及基本操作

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

关系型数据库

关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。
SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgreSQL 等。
以上数据库在使用的时候必须先建库建表设计表结构,然后存储数据的时候按表结构去存,
如果数据与表结构不匹配就会存储失败。

非关系型数据库

NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。
除了主流的关系型数据库外的数据库,都认为是非关系型。
不需要预先建库建表定义数据存储表结构每条记录可以有不同的数据类型和字段个数
(比如微信群聊里的文字、图片、视频、音乐等)。
主流的 NoSQL 数据库有 Redis、MongBD、Hbase、Memcached 等。

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

1、数据的存储方式不同
关系型和非关系型数据库的主要差异是数据存储的方式
关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起
2、扩展方式不同
SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。

NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,
NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
3、对事务性的支持不同
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划
那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。
SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,
所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

非关系型数据库产生背景

可用于应对Web2.0(交互)纯动态网站类型的三高问题。
(1)对数据库高并发读写需求
(2)对海量数据高效存储与访问需求
(3)对数据库高可扩展性与高可用性需求

小结

关系数据库

  • 1、安全性高(持久化)
  • 2、事务处理能力强
  • 3、任务控制能力强
  • 4、可以做日志备份、恢复、容灾的能力更强一点。

数据库-->表-->记录行(row)、数据字段(column)-->存储数据

非关系数据库

  • 1、数据保存在缓存中,利于读取速度/查询数据
  • 2、架构中位置灵活
  • 3、分布式、扩展性高

非关系型数据库:数据库-->集合(collection)-->键值对(key-value)
不需要手动建数据库和集合(表)。

Redis简介

Redis(远程字典服务器)是一个开源的,使用c语言编写的NoSQL数据库。
基于内存运行,支持持久化(数据恢复)。采用的就是key-value(键值对)的存储形式。
目前在分布式架构中是非常重要的一环。

redis服务器程序是一个单进程模型,也就是说在一台服务器上可以启动多个redis
(注意端口号不能冲突)
redis的实际处理速度是完全依靠主进程的执行效率。
服务器只部署了一个redis进程,多个客户端访问,可能会导致redis的处理能力下降。
部署了多个redis进程,虽然能提高redis的并发处理能力,但会给服务器的cpu带来很大的压力。
一台服务器一般部署3个redis进程。
(根据情况来看,高并发要部署多个。一般的情况,单进程足够)

Redis的优点
1、具有极高的读写速度,数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s。
2、支持丰富的数据类型,支持 key-value、Strings、Lists、Hashes、Sets等数据类型操作。
3、支持数据的持久化,平常的数据都是保存在内存中,持久化可以写入到磁盘中,既可以保存到本地,也可以实现备份。
4、原子性,Redis所有操作都是原子性的。
5、支持主从模式,即master-slave模式。

redis为什么这么快?
1、redis是纯内存结构,避免了磁盘I/O的耗时。
2、核心模块是一个单进程,减少了线程切换和回收线程资源的时间。
3、I/O的多路复用机制。每一个执行线路都可以同时执行读和写。高并发的效率大大提高。
特殊说明:redis的读写命令,仍然是单进程处理。

Redis安装部署

systemctl stop firewalld
setenforce 0
yum install -y gcc gcc-c++ make
cd /opt
--拖入redis压缩包--
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd redis-5.0.7/
make -j 4
make PREFIX=/usr/local/redis install
cd utils
./install_server.sh
#一直回车
Please select the redis executable path [] /usr/local/redis/bin/redis-server  	
#需要手动修改为/usr/local/redis/bin/redis-server,注意要一次性正确输入ln -s /usr/local/redis/bin/* /usr/local/bin/
ss -antp | grep redis修改配置文件
vim /etc/redis/6379.conf
--70行添加监听的主机地址--
bind 127.0.0.1 20.0.0.91
--93行Redis默认的监听端口--
port 6379
--137行启用守护进程(后台运行)--
daemonize yes
--159行指定PID文件--
pidfile /var/run/redis_6379.pid
--167行日志级别--
loglevel notice
--172行指定日志文件--
logfile /var/log/redis_6379.log/etc/init.d/redis_6379 restart
ss -antp| grep redis

Redis命令工具

redis-server:用于启动 Redis 的工具
redis-benchmark:用于检测 Redis 在本机的运行效率
redis-check-aof:修复 AOF 持久化文件
redis-check-rdb:修复 RDB 持久化文件
redis-cli:Redis 命令行工具

redis-cli命令行工具

语法:redis-cli -h host -p port -a password
-h:指定远程主机
-p:指定 Redis 服务的端口号
-a:指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用127.0.0.1:6379连接本机上的 Redis 数据库redis-cli -h 20.0.0.91 -p 6379 -a 123456

redis-benchmark测试工具

redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。
基本的测试语法:redis-benchmark [选项] [选项值]。
-h :指定服务器主机名。
-p :指定服务器端口。
-c :指定并发连接数。
-n :指定请求数。
#向IP地址为20.0.0.91、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 20.0.0.91 -p 6379 -c 100 -n 100000#测试存取大小为100字节的数据包的性能
redis-benchmark -h 20.0.0.91 -p 6379 -q -d 100#测试本机上Redis服务在进行set与lpush操作时的性能
redis-benchmark -t set,lpush -n 100000 -q

Redis数据库常用命令及数据类型

基础数据类型

string字符串
list列表,双向链表
hash散列,键值对集合
set集合,不重复
sorted set,也可以称为Zset有序集合

1.String数据类型

keys *展示所有键名

set存放数据

格式:
set key value

#set操作可覆盖原有值

get获取数据

格式:
get key

keys结合*、?查看键值列表

exists查看键名是否存在

del删除键

type查看键的类型

append追加键值

格式:
append key value
追加键值,并返回追加后的长度(若键不存在,则相当于创建)

strlen查看键值长度

incr自增1

decr自减1

setex设置指定key的过期时间

expire设置已有key的指定时间

mset批量存放及mget批量获取

flushall删除redis中所有数据

2.list数据类型

列表,但是列表中的元素还是string类型,按照插入顺序排序,在列表的头部或尾部添加元素

lpush左插入列表元素(反向排列)

格式:
LPUSH key value [value …]

lpushx在头部插入元素值

格式:
lpush key value
#键必须存在才能执行,在头部插入元素值并返回并返回列表元素数量

rpush右插入列表元素(正向排列)

rpushx在尾部插入元素值

lrange获取列表元素

格式:
lrange key start stop
#取从位置索引start到位置索引stop的所有元素(所以以0开始)

lpop移除列表第一个元素

rpop移除列表最后一个元素

llen获取列表长度

 lindex获取指定索引元素

lset指定索引位将元素设为新值

linsert在元素前\后插入新元素

3.Hash数据类型

hash用于存储对象。可以采用这样的命名方式(hash格式):对象类别和ID构成键名,
使用字段表示对象的属性而字段值则存储属性值。
如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间

每一个Hash可以存储4294967295个键值对。
对一个键进行多字段存储,节省内存,使用hash方式.

hset给键设置字段和值

hmset给键同时设置多个字段和值

hget获取键中字段的值

hmget同时获取键中多个字段的值

hdel删除键中的字段

hgetall获取键中所有字段及其值

hkeys获取键中所有字段

hvals获取键中所有字段的值

4.set数据类型

无序集合,元素类型为string类型,元素具有唯一性, 不允许存在重复的成员
多个集合类型之间可以进行并集、交集和差集运算。
可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。

sadd插入数据

smembers查看数据

sismember查看元素是否存在

srandmember随机返回某一元素

spop随机移除某一元素

srem指定移除元素

smove移动元素至其他键

5.有序集合

有序集合,元素类型为String,元素具有唯一性, 不能重复。
每个元素都会关联–个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。

zadd添加成员

zrange获取键中成员

zrank获取键中成员索引位置

zcard获取键中成员数量

zcount指定条件统计成员

zrem删除成员

zscore查看权重

 dbsize查看当前库中键的数量

6.其他相关操作

 rename修改键名

select切换库

redis有自动创建好的16个库(序号0-15),互相独立,互补干扰,默认库序号为0

move移动键到其他库

config设置密码

auth在内声明密码

-a在外声明密码

flushdb删除当前库数据

flushall删除所有库数据

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

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

相关文章

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…

软件测试/人工智能丨人工智能取代软件测试团队

在数字时代,人工智能(AI)和软件测试如同两位不同领域的英雄,各自拥有独特的技能和力量。然而,当这两者碰撞在一起时,究竟会擦出怎样的火花呢?让我们进入这场奇妙的对决,探索AI如何改…

MFC项目添加CUDA支持

文章目录 前言一、开启项目CUDA支持二、链接CUDA库三、链接cu文件 前言 我目前的项目状况是: 拥有一个MFC项目;拥有现成的 .cuh文件 和 .cu文件。 我想做的是:将.cuh和.cu文件放到我的项目中,并且编译成功跑起来 一、开启项目C…

Halcon (0):C# 联合Halcon方式简介和就业市场说明

文章目录 文章专栏视频资源前言相关视频联合C#开发直接导出C#代码Halcon引擎调用开发函数封装库工程导出 总结就业市场 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 根据我的测试,我发现Halcon和WPF中的halcon插件,代码具有对应性。就是…

Unity - 实现模型动态伸长缩短,贴图不变形(材质球参数篇)

思路为修改模型材质球的Tiling参数&#xff0c;根据与自身localScale的值得到合适的比例&#xff0c;再修改Tiling值 var mat target.transform.GetComponent<Renderer>().material; var oriValue mat.mainTextureScale;//沿着Y轴伸缩 oriValue.y 1 * target.transfo…

HCIP-二、MSTP+Eth-trunk

二、MSTPEth-trunk 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.如图所示&#xff0c;配置设备名称和 IP 地址。 //2.在 SW1 与 SW2 之间配置链路聚合协议 LACP&#xff0c;完成以下需求&#xff1a; //2.1 SW1 作为主动端&#xff0c;设置系统优先级为最高。 [SW1]l…

报错!Jupyter notebook 500 : Internal Server Error

Jupyter notebook 报错 500 : Internal Server Error 问题背景 tensorflow-gpu环境&#xff0c;为跑特定代码专门开了一个环境&#xff0c;使用conda安装了Jupyter notebook&#xff0c;能够在浏览器打开Jupyter notebook&#xff0c;但是notebook打开ipynb会报错。 问题分析…

Android——Gradle插件项目根目录settings.gradle和build.gradle

一、settings.gradle结构分析 项目根目录下的settings.gradle配置文件示例&#xff1a; pluginManagement {/*** The pluginManagement.repositories block configures the* repositories Gradle uses to search or download the Gradle plugins and* their transitive depen…

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

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

电脑显示找不到mfc140.dll怎么办?哪个修复方法值得推荐

在电脑使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;例如"mfc140.dll文件缺失"这个问题可能会导致某些应用程序无法正常运行&#xff0c;可能给您带来困扰。本篇文章为您提供了六种有效解决此类问题的策略&#xff0c;使您能够迅速修复并恢复应用程…

一篇文章带你了解Python常用自动化测试框架 —— Pytest

在之前的文章里我们已经学习了Python自带测试框架UnitTest&#xff0c;但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框架Pytest&#xff0c;它在保留了UnitTest框架语法的基础上有着更多的优化处理 下面我们将从以下角度来介绍Pytest&#xff1a; Pytest基本介绍…

mac系统安装docker desktop

Docker的基本概念 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。比如说nginx,mysql,redis等软件可以做成一个镜像。容器&#…

什么是高防CDN?有什么优势?

德迅高防CDN技术概述 随着互联网的快速发展&#xff0c;网络安全问题越来越受到人们的关注。高防CDN(Content Delivery Network)作为一种有效的网络安全防御手段&#xff0c;在企业和个人网站中得到了广泛应用。本文将详细介绍高防CDN的技术原理、防御原理、优点和应用场景&am…

如何验证命令执行漏洞(无回显)

如何验证命令执行漏洞&#xff08;无回显&#xff09; 使用yakit&#xff0c;选择dnslog模块 点击生成一个可用域名 以dvwa为例 命令执行ping一下刚才的域名 随后yakit中会出现回显信息&#xff0c;以此证明拥有命令执行漏洞 信息&#xff0c;以此证明拥有命令执行漏洞

【Java】乡镇卫生院、社区卫生服务中心云HIS源码

云HIS采用云端SaaS服务的方式提供&#xff0c;用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、配置化、智能化、扩展化等设计方法&#xff0c;覆盖了基层医院机构的主要工作流程&#xff0c;能够与监管系统有序对接…

TensorFlow实战教程(十八)-Keras搭建卷积神经网络及CNN原理详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了Keras实现分类学习,以MNIST数字图片为例进行讲解。本篇文章详细讲解了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。基础性文章,希望对您有所帮助! 一…

vite vue3配置axios

准备 参考 安装axios yarn add axios中文官网 src下新建request文件夹&#xff0c;该文件下新建index.ts import axios from axios; import { ElMessage } from element-plus;// const errorCodeType function (code: number): string { // let errMessage: string 未知…

一阶低通滤波器(一阶巴特沃斯滤波器)

连续传递函数G(s) 离散传递函数G(z) 转换为差分方程形式 一阶巴特沃斯滤波器Filter Designer参数设计&#xff1a;参考之前的博客Matlab的Filter Designer工具设计二阶低通滤波器 设计采样频率100Hz&#xff0c;截止频率20Hz。 注意&#xff1a;设计参数使用在离散系统中&…

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、稳定性测试TPS…

AI生成技术威胁版权保护,水印技术和法律完善是关键/安圭拉小岛以.ai域名注册赚得3000万美元 |魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件&#x1f525;&#xff0c;更新AIGC的最新动态&#xff0c;生成相应的魔法简报&#xff0c;节省阅读时间&#x1f47b; &#x1f525;资讯预览 AI生成技术威胁版权保护&#xff0c;水印技术和法律完善是关键 Sam Altman对…