您现在的位置是:首页 >技术交流 >redis非关系型数据库网站首页技术交流
redis非关系型数据库
1.什么叫NOSQL
nosql:不仅仅是sql,是非关系型数据库的概述
2.NOSQL和RDBMS的区别
RDBMS:
高度组织化结构化数据。
user---userid username age sex .....
结构化查询语言(SQL)
数据和关系都存储在单独的表中。
数据定义语言DDL,数据操纵语言DML,
严格的一致性.事务
基于事务----mysql事务: ACID 事务并发带来的问题: 事务的隔离级别
NoSOL:
代表着不仅仅是SQL
没有声明性查询语言
键-值对存储。
非结构化和不可预知的数据 字符串 对象 队列 集合
高性能,高可用性和可伸缩性。适合搭建集群。mysql搭建主从模式
1. 数据模型:
NoSQL:NoSQL数据库采用非关系型数据模型,例如键值存储、文档数据库、列族数据库、图数据库等。这些数据库不需要遵循固定的表格结构,可以根据需要动态定义数据模式。
RDBMS:RDBMS采用关系型数据模型,数据以表格形式组织
2. 数据关系:NoSQL:NoSQL数据库通常不支持表之间的复杂关系,数据之间的关联由应用程序处理。
RDBMS:RDBMS支持复杂的数据关系,通过外键等机制实现表之间的关联。
3. 可扩展性:NoSQL:NoSQL数据库通常具有良好的可扩展性,可以轻松地扩展到大规模的分布式系统,适用于处理海量数据和高并发请求。
RDBMS:传统的RDBMS在处理大规模数据和高并发时可能面临挑战,虽然一些RDBMS已经增加了分布式扩展功能,但通常不如NoSQL数据库灵活。
4. 数据一致性:NoSQL:一些NoSQL数据库支持最终一致性,即数据在一段时间内可能会出现不一致的状态,但最终会达到一致。
RDBMS:RDBMS通常支持强一致性,即保证数据的一致性和完整性。
5. 查询语言:NoSQL:NoSQL数据库的查询语言通常比较简单,可能不支持复杂的查询操作。
RDBMS:RDBMS使用SQL进行查询和操作,可以执行复杂的数据查询和处理。
3.常见的NOSQL产品
1.Redis
2.MongoDb 前端
3.Hbase 数据库
4.什么是Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
内存存储的数据结构服务器,可用作数据库、缓存、引流擎和消息队列代理的开源内存数据存储
注意:redis的计算都是基于内存,redis的存储可以存在磁盘上
特点:
1.redis的计算都是基于内存,Redis读取的速度快,
是110000次/s,写的速度是81000次/s
2.原子。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
3.支持多种数据结构:字符串、哈希结构、列表、集合、可排序集合和基数
4.持久化--磁盘,redis的存储可以存在磁盘上
5.主从复制(集群)Redis 可以在如缓存、消息传递队列中使用
5.安装
安装c语言环境
下载解压
进入安装目录 make | make install
启动
拷贝cp redis.conf redis.conf.blank,防止改错
启动redis-server redis.conf
redis-server +完整路径
连接客户端
redis-cli 默认连接本地的redis服务
redis-cli -h 192.168.64.129 -p 6379
-h :连接redis服务器的ip
-p :连接redis服务器的端口号

6.目录
redis.conf redis配置文件
sentinel.conf redis集群烧饼的配置文件
(1)设置redis启动时后台启动

是否启动
查看进程 客户端连接
(2)设置远程连接

保护策略设置为no

7.操作
默认redis有16个库

select n:选择库
flushdb:清空当前所在库
flushall:清空所有的库
redis支持多种数据结构:
常用:字符串、哈希、列表、集合、可排序集合
7.1对字符串的支持
它的value类型为字符串类型
keys * 查看所有key
set key value:存储字符串类型的value值,每次只能存储一个
get key :获取指定key的value
setex key seconds value :存储key-value时为其指定过期时间 seconds (以秒为单位)
setnx key value:存储的key如果存在,则不存入,如果不存在则存入
mset key value key value...存储多个
mget key1 key2 ...查询多个
incr key :对指定的key进行累加 点赞
decr key :对指定的key进行累减 取消点赞

7.2hash散列表类型的命令
hset key filed value 将哈希表 key 中的字段 field 的值设为 value 。
hget key filed:获取指定key对应的filed

hexists key filed:判断指定的filed是否存在
hkeys key:获取指定key的所有field
hvals key:获取指定key的所有value
hgetall key :获取指定key对应的所有hash

7.3list列表类型的命令
lpush k1 v1 v2 v3...将一个或多个值插入到列表头部 元素可重复
lrange key start end 获取指定key对应返回的列表元素范
lset key iindex value通过索引设置列表元素的值
lpop key :获取并移除最左边的元素

7.4set集合类型的命令
sadd key value value ....添加合集元素 添加的元素不能重复
smembers key 查看
sunion k1 k2 :求k1和k2的并集
sinter k1 k2 :交集
sdiff k1 k2 :求k1和k2的差集


7.5sorted set集合类型的命令
它的value也是一个集合,但是该集合需要额外增加一个分数值,用于排序,不允许重复
zadd key score value score value ...添加
zrange key start end 最新热门
zrange key start end withscores带数字
zrevrange key start end 倒序

8.应用场景
1.作为热点数据的存储 缓存
2.可以实现session共享
3.点赞,收藏,评论数等
4.分布式锁
5.排行榜
9.redis的持久化方式
持久化:把内存中的数据,保存到磁盘的过程
作用:防止数据的丢失
1.RDB
2.AOF
1.RDB持久化方式
RDB 持久性以指定的时间间隔执行数据集的时间点快照。redis默认的持久化方式
指在指定间隔内,把内存中的数据复制到磁盘
RDB持久化存储在磁盘上的名称默认为dump.rdb
什么时候出发RDB持久化方式
1.手动触发 save命令触发
2.bgsave
区别
save命令会阻塞当前redis服务器,执行save命令期间,redis不能执行其他命令,直到RDB过程完成
bgsave执行该命令时,redis会在后台异步进行快照操作,快照同时还可以响应客户端请求





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结