nosql

公共基础

一、NoSQL概述

1、NoSQL

NoSQL定义:

非关系型、分布式、开放源码和具有横向扩展能力的下一代数据库。NOSQL==“Not Only SQL”。

2 数据库的分类
1、TRDB数据库

传统关系型数据库:基于单机集中管理数据理念,传统关系型数据库建立在集中的数据库管理系统上

TRDB数据库特点:

使用强存储模式技术;采用SQL技术标准定义和操作数据库;采用强事务保证可用性以及安全;采用单机集中处理方式

2、NoSQL数据库

一般NoSQL技术从数据存储结构原理分为:

键值存储:

特点:通过唯一的键值对组织数据,适用于快速存取和简单数据模型。 ​ 代表产品:Redis,Cassandra,Riak,DynamoDB。 ​ 列族存储:

特点:数据被组织成列族,每个列族包含多个列,适用于大规模数据和高吞吐量。 ​ 代表产品: HBase,Cassandra。 ​ 文档存储:

特点:数据以文档的形式存储,文档可以是自包含的、具有层次结构的文档或键值对。 ​ 代表产品:MongoDB,Couchbase,RavenDB。 ​ 图形数据库(Graph Databases):

特点:以图的形式存储数据,适用于复杂的关系和图状结构查询。 ​ 代表产品:Neo4j,OrientDB,ArangoDB。

NoSQL数据库特点:

使用弱存储模式技术;无SQL技术标准定义和操作数据库;采用弱事务保证可用性;主要采用多机分布式处理方式。

基于大数据应用产生的新技术

3、NewSQL数据库

结合传统关系型数据库与Nosql数据库技术的优点,实现大数据环境下的数据存储和处理。

二、数据库存储架构分类

1、单机架构

优点:集中部署、便于运维

缺点: 单机只能纵向扩展,可扩展性差;存在单点故障,出现故障会停机

2、主备架构

数据库部署在两台服务器上,主机负责数据读写,备机利用数据同步进行数据同步,保证数据一致。

优点:有一定的低于故障的能力;提升了数据的容错性

缺点:资源浪费,无故障只使用主机;性能压力集中在主机;故障时需要人工干预

3、主从架构

通过读写分离模式分散服务压力,主机负责写操作,从机负责数据查询服务

优点:提升资源利用率,适合读多写少场景;在大并发的场景,可以使用负载均衡在多个从机之间;从机扩展灵活,扩容操作不影响业务

缺点:延迟问题,数据同步到从机数据库时存在延迟,存在暂时性的数据不一致;写操作的性能压力在主机;主机故障是需要主从切换,人工干预需要响应时间,自动切换复杂度高

4、多主架构

数据库服务器互为主从,同时对外提供完整的数据服务

优点:资源利用率高;降低单点故障的风险

缺点:双主机都接受写数据,要实现数据双向同步,双向复制会带来延迟问题,极端情况有可能数据丢失

5、分片架构

水平数据分片架构,把数据分散在多个节点上分片方案,每个片包括数据库一部分

优点:

数据分散在集群的各个节点上,所有节点可以独立性工作;提升数据库写性能,降低单库数据容量

三、MongDB

1、MongoDB概述

由c++编写的开源、高性能、无模式的基于分布式文件存储的文档型数据库

特点:

高性能、高可用性、高扩展性、丰富的查询支持、可替换已完场文档某个指定的数据字段

应用场景:

社交场景:使用mongodb存储用户信息

游戏场景:用户信息,装备积分

物流场景:订单信息,订单状态

视频直播场景:点赞互动信息

场景操作特点:数据量大;读写操作频繁;价值较低的数据,对事物性要求不高

2、MongoDB增删改查

集合命名规则:

不能是空字符串;不能含有$、 \0 ;不能以system开头;用“.”来组织子集合

集合操作:

创建集合 :

(1)指定创建

db.createCllection("name1")

db.createCllection("cn",{"capped":true,"size":1000})

(2)默认创建(向不存在的集合里插入文档)

db.names.insert({"name":"zs","age":20})

查看集合

(1)show table

(2)show collections

(3)db.getCollectionNames()

(4)db.collections.stats()

删除集合:dorp()

db.collections.drop()

文档操作

插入

1、insert()、 insert({},{},{})

db.name.insert({"name":"zhangsan"},{"age":20})

2、insertOne()

db.name.insertOne({"name":"wangwu"})

3、insertMany([{},{}])

4、v=({"name":"xiaobai","age":5})

查询

(1)、无条件查询

db.name.find()

(2)、带条件查询

< :lt <=:lte >: gt >=: gte !=: ne

格式:db.col.find({"age":{$lt:30}}).pretty() 年龄小于30

db.col.find({"age":{$gt18,$lt20}}) 大于18,小于20的人

(3)、AND条件

db.col.find({key1:value1,key2:value2})

(4)、OR条件

db.col.find({$or:[{key1:value1},{key2:value2}]})

(5)、AND与OR

db.col.find({key1:value1,$or:[{key:value2},{key3:values3}]})

(6)、投影查询

db.col.find({},{"name":1,"_id":0}) id不被获取

db.col.find({},"_id":0}) id被获取

在_id字段为0时候,其他字段可以为1

在_id为1的时候,其他字段必须为1;

排序

sort(): 1为升序,-1为降序

db.col.find({},{age:1,_id:0}).sort{age:-1} 按照年龄降序排序

db.col.find({},_id:0}).sort{age:-1,num:1}按照年龄降序,年龄相同按照num升序

修改

db.col.update(参数1,参数2,参数3)

参数1:query查询条件

参数2:更新对象

db.col.update({k1:v1},{"$set":{k2:v2}})

$set:字段存在修改,不存在添加

3、MongoDB索引

db.name.createIndex({"name":1})

1:升序,-1:降序

1、索引种类

(1)单字段索引

在集合同键上不能重复创建索引,新插入文档name值不能相同,集合存在相同name不能创建索引

嵌套文档单字段索引

db.name.insert({tage:{pres:"123",call:"123"}})

db.name.createIndex({"tage.press":1})

(2)、复合索引

交叉索引

查询的时候通过多个字段索引查询,查询多个字段使用复合索引,最终结果做交集

先按照第一个字段排序,第一个字段相同按照第二个字段排序

db.name.createIndex({key:1,key2:1})

(3)、hash索引

哈希索引使用索引字段值的哈希值维护缩影条目,哈希索引可以用作哈希分片键 来对数据分片,基于哈希的分片将字段的索引用作 分片键,以跨分片群集对数据进行分区

db.name.createIndex({name:"hashed"})

(4)、文本索引

字符串内容上创建执行文件的查询操作,为了执行文件检索查询,必需在集合上有一个text索引,一个集合只能拥有一个文本索 引,文本索引可以覆盖多个字段,索引操作符text index,$text

db.name.createIndex({name:"text",description:"text"})

db.name.find({$text:{$search:"java coffee shop"}})

2、查看索引

db.name.getIndexes()

db.name.getIndexKeys()

3、查看索引大小

db.name.totallndexSize()

4、删除索引

db.name.droplndex("name_index")

5、重建索引

db.name.reIndex()

6、索引限制

额外开销

每个索引会占据一定的存储空间,在进行增删改查操作的时候需要对索引进行操作

内存使用

由于索引会存储在内存中,确保索引大小不超过内存限制

查询限制

索引不能被正则表达式及非操作符:$nin,$ not使用

集合索引不能超过64个;索引名长度不能超过128个字符;一个复合索引最多可以有31个字段。

4、MongoDB 集群

1、mongdb集群

复制集:保证数据安全性和可用性

分片:实现数据海量存储

四、redis

1、Redis概述

开源、c语言编写、默认端口号6379、key-value形式存在,存储非结构化数据

基本特征:

1、键值性;2、单线程;3、低延迟,速度快;4、支持数据持久化;5、支持主从模式,哨兵模式,分片集群;6、支持多语言客户端;

Redis主从模式特点:

  1. 数据复制:主节点(Master)将数据复制到一个或多个从节点(Slaves)。主节点负责写入操作,而从节点负责读取操作。通过数据复制,从节点可以保持与主节点相同的数据副本,以提供读取操作的性能和可用性。

  2. 故障转移:当主节点发生故障或不可用时,从节点可以自动选举一个新的主节点,以保持系统的可用性。故障转移通常是通过Redis哨兵(Sentinel)或集群管理器实现的。

  3. 扩展性:Redis主从模式可以通过添加更多的从节点来扩展读取性能和容量。从节点可以分担主节点的读取负载,从而提高系统的扩展性。

  4. 可靠性和备份:通过将数据复制到多个从节点,Redis主从模式提供了数据的冗余备份。即使主节点发生故障,从节点可以提供持续的读取服务,并且在主节点恢复后可以重新进行同步。

  5. 数据一致性:Redis主从模式提供了异步复制,默认情况下从节点与主节点之间的复制是异步的。这意味着从节点可能会有一些延迟,并且在复制期间可能会发生数据丢失的情况。但通过配置Redis的持久化机制和复制选项,可以提高数据的一致性和容错性。

2、Redis基本数据结构
(1)String

string类型的值最大能存储512MB

应用场景:

1、数字计数:如贴子点赞数

2、存储对象:以json形式存储

命令 含义
Set key value [EX PX NX XX] EX:到期时间为秒,PX:到期时间为毫秒,NX:键不存在,创建键名,XX:键存在才设置值
Mset 多建设置值 mset set1 "aa" set2 "bb"
MsetNX 当多个键中有一个键存在不执行 MsetNX set1 "cec" set3 "ccd"
Get key 返回指定键的值,不存在键返回 nil
MGet key1 key2 指定多个键
Del key 删除key
StrLen key 获取键的值长度
Append key vlaue 存在key追加,不存在key创建
GetRange key start end 返回指定范围的字符串子集
GetSet key vlaue 返回旧的值,设置新的值
SetRange key start vlaue 在start位置设置vlaue
Decr 、DecrBy 、Incr 、IncrBy 、IncrByFloat -1、-n、+1、 +n 、+n.0
(2)list

list类型:key不可重复,value可重复,链表实现,插入顺序排列,读写从两头开始

应用场景:

1、微信朋友圈点赞

2、新浪微博、腾讯微博个人用户的关注列表,粉丝列表

3、新闻、资讯类网站,最新按照发生的时间顺序展示列表

序号 命令及描述
Blpop key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
Brpopkey1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BrpopLpush source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
Lindex key index 通过索引获取列表中的元素
Linsert key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
Llen key 获取列表长度
Lpop key 移出并获取列表的第一个元素
Lpush key value1 [value2] 将一个或多个值插入到列表头部
Lpushx key value 将一个值插入到已存在的列表头部
Lrange key start stop 获取列表指定范围内的元素
Lrem key count value 移除列表元素
Lset key index value 通过索引设置列表元素的值
Ltrim key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
Rpop key 移除列表的最后一个元素,返回值为移除的元素。
RpopLpush source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
Rpush key value1 [value2] 在列表中添加一个或多个值到列表尾部
Rpushx key value 为已存在的列表添加值
(3)hash

存储对个键值对,无序,键名不应太长,适合小规模数据对象存储,每个hash可以存储2的32次方-1个键值对,占用更小空间,更加节省内存空间

应用场景:

1、购物车

2、存储对象hash类型的结构与对象的结构相似对象

序号 命令及描述
HDEL key field1 field2 删除一个或多个哈希表字段
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
HGET key field 获取存储在哈希表中指定字段的值。
HGETALL key 获取在哈希表中指定 key 的所有字段和值
HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
HKEYS key 获取哈希表中的所有字段
HLEN key 获取哈希表中字段的数量
HMGET key field1 获取所有给定字段的值
HMSET key field1 value1 field2 value2 同时将多个 field-value (域-值)对设置到哈希表 key 中。
HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。
HVALS key 获取哈希表中所有值。
HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。
(4)set

value不重复,value无序,读写任意,set元素最大可以包括2的32次方-1个元素

应用场景:

1、抽奖,提供一个随机元素的操作

2、点赞、签到、打卡、每个用户只能点赞、签到或打卡一次。

命令 功能
Sadd 添加一个或多个元素到集合中
SMembers 返回集合所有元素
Srem 删除集合中指定的元素
scard 返回集合元素数量
srandMember 从集合中随机返回一个或多个元素
smove 把一个集合的元素移动到另一个集合中
spop 从集合中随机返回(并删除)一个或多个元素
slsMember 集合成员是否存在判断
Ssan 增量迭代式返回集合元素
(5)Zset

value不能重复,每个value会关联一个分数值,通过分数数值大小对value从小到大排序,插入顺序无关

应用场景:

1、排行榜

序号 命令及描述
Zadd key score1 member1 向有序集合添加一个或多个成员,或者更新已存在成员的分数
Zcard key 获取有序集合的成员数
Zcount key min max 计算在有序集合中指定区间分数的成员数
Zincrby key increment member 有序集合中对指定成员的分数加上增量 incremen
Zinterstore destination numkeys key 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination
Zrange key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
Zrangebylex key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
ZRANK key member 返回有序集合中指定成员的索引
ZREM key member [member ...] 移除有序集合中的一个或多个成员ZREMRANGEBYLEX key min max
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE key member 返回有序集中,成员的分数值
ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)

五、消息队列及Redis集群

1、消息队列

Publish 发布消息到指定频道

Subscribe 订阅频道信息

A卷

简答题

一、redis特点

键值型

单线程

低延迟速度快

支持数据持久化

支持主从,哨兵、分片

支持多语言客户端

二、字符串命令
命令 含义
Set key value [EX PX NX XX] EX:到期时间为秒,PX:到期时间为毫秒,NX:键不存在,创建键名,XX:键存在才设置值
Mset 多建设置值 mset set1 "aa" set2 "bb"
MsetNX 当多个键中有一个键存在不执行 MsetNX set1 "cec" set3 "ccd"
Get key 返回指定键的值,不存在键返回 nil
MGet key1 key2 指定多个键
Del key 删除key
StrLen key 获取键的值长度
Append key vlaue 存在key追加,不存在key创建
GetRange key start end 返回指定范围的字符串子集
GetSet key vlaue 返回旧的值,设置新的值
SetRange key start vlaue 在start位置设置vlaue
Decr 、DecrBy 、Incr 、IncrBy 、IncrByFloat -1、-n、+1、 +n 、+n.0
三、mongdb索引
mongodb的索引,为什么要建立索引,查询时有无索引的区别

MongoDB建立索引的主要目的是为了提高查询性能和数据访问效率

有索引和没有索引的区别:

  1. 当没有建立索引时:MongoDB读取数据时,必须扫描集合中的所有我能当记录。这种全集扫描的效率非常低。

  2. 建立索引::MongoDB读取数据时,将扫描索引内容,而不会去扫描对应的集合。提高了查询的效率。

B卷

一、redis无序集合

基本操作(难:扫描集合扫描以Z开头的集合,一次扫描个数为2 SSCAN setName 0 MATCH Z* COUNT 2

命令 功能
Sadd 添加一个或多个元素到集合中
SMembers 返回集合所有元素
Srem 删除集合中指定的元素
scard 返回集合元素数量
srandMember 从集合中随机返回一个或多个元素
smove 把一个集合的元素移动到另一个集合中
spop 从集合中随机返回(并删除)一个或多个元素
slsMember 集合成员是否存在判断
Ssan 增量迭代式返回集合元素
二、redis五种基本类型应用场景
  1. 字符串(string):适用于缓存、计数器、分布式锁等场景。例如,可以将用户的个人信息存储为一个字符串。

  2. 哈希(hash):适用于存储对象,每个对象可以包含多个字段。例如,可以将用户的详细信息存储为一个哈希。

  3. 列表(list):适用于消息队列、最新消息列表等场景。例如,可以将用户发表的消息存储为一个列表。

  4. 集合(set):适用于去重、共同好友等场景。例如,可以将用户的好友列表存储为一个集合。

  5. 有序集合(sorted set):适用于排行榜、热门文章等场景。例如,可以将文章的热度值存储为一个有序集合。

三、mongodb 分片与复制集的作用

1、分片:

用于处理海量数据的存储和处理。通过将数据分布在多个节点上,可以提高数据的存储能力和处理性能。分布集群还可以提供高可用性和容错能力,即使某个节点发生故障,系统仍然可以正常运行。

2、复制集:

在多个节点上保存数据的副本来提供故障恢复和容灾能力。复制集由一个主节点和多个从节点组成,主节点负责处理所有的写操作,并将写操作同步到从节点上。当主节点发生故障时,从节点可以自动选举一个新的主节点,确保系统的连续性和可用性。

原文地址:https://blog.csdn.net/weixin_63118253/article/details/131502245

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的数据库,创建在关系模型(二维表模型)基础上,一般面向于记录SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作主流的关系数据库包括Oracle、Mysql、SQL Server、Microsoft Access、DB2等非关系型数据库NoSQL(nOSQL=Not Only SQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。除了主流的关系型数据库外的数据库,都认为是非关系型主流的NoSQ.._redis是非关系型数据库吗
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒杀是很常见的营销场景,在一定时间内有大量的用户访问商场下单,主要需要解决的问题有两个:1. 高并发对数据库产生的压力;2. 竞争状态下如何解决商品库存超卖;高并发对数据库产生的压力对于第一个问题,使用缓存来处理,避免直接操作数据库,例如使用 Redis。竞争状态下如何解决商品库存超卖对于第二个问题,需要重点说明。常规写法:查询出对应商品的库存,判断库存数量否大于 0,然后执行生成订单等操作,但是在判断库存是否大于 0 处,如果在高并发下就会有问题,导致库存_php库存结余并发
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb提供了MongoTemplate和MongoRepository两种方式访问MongoDB,MongoRepository的方式访问较为简单,MongoTemplate方式较为灵活,这两种方式在Java对于MongoDB的运用中相辅相成。_springboot插入指定的mongodb数据库
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景介绍NoSQL数据库是一种非关系型数据库,它的特点是可以存储非结构化的数据,并且可以处理大量的数据。HBase是一个分布式、可扩展的列式存储系统,它是基于Google的Bigtable设计的。HBase是一个开源的NoSQL数据库,它的核心功能是提供高性能的随机读写访问。在本文中,我们将对比HBase与其他NoSQL数据库,例如Redis、MongoDB、Cass...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn-scram-sha-1
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无法获取数据,只能试试monstache抽取mongodb数据,但是monstache需要mongodb replica set 模式才能采集数据。############monstache-compose文件。#replicas set 启动服务。# 默认备份节点不能读写,可以设置。# mydb指的是需要同步的数据库。#登录主mongodb初始化rs。#primary 创建用户。# ip地址注意要修改。# ip地址注意要修改。_monstache csdn
文章浏览阅读913次,点赞4次,收藏5次。storage:fork: trueadmin登录切换数据库注意: use 代表创建并使用,当库中没有数据时默认不显示这个库删除数据库查看表清单> show tables # 或者 > show collections表创建db.createCollection('集合名称', [options])table1字段类型描述capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。_mongodb5
文章浏览阅读862次。Centos7.9设置MongoDB开机自启(超全教程,一条龙)_mongodb centos开机启动脚本
文章浏览阅读1.3k次,点赞6次,收藏21次。NoSQL数据库使用场景以及架构介绍
文章浏览阅读856次,点赞21次,收藏20次。1.背景介绍1. 背景介绍NoSQL数据库是一种非关系型数据库,它的设计目标是为了解决传统关系型数据库(如MySQL、Oracle等)在处理大量不结构化数据方面的不足。NoSQL数据库可以处理大量数据,具有高性能、高可扩展性和高可用性。但是,与关系型数据库不同,NoSQL数据库没有固定的模式,数据结构也不一定是表格。在NoSQL数据库中,数据存储和查询都是基于键值对、列族、图形等不同的...
文章浏览阅读416次。NoSQL定义:非关系型、分布式、开放源码和具有横向扩展能力的下一代数据库。由c++编写的开源、高性能、无模式的基于分布式文件存储的文档型数据库特点:高性能、高可用性、高扩展性、丰富的查询支持、可替换已完场文档某个指定的数据字段应用场景:社交场景:使用mongodb存储用户信息游戏场景:用户信息,装备积分物流场景:订单信息,订单状态场景操作特点:数据量大;读写操作频繁;价值较低的数据,对事物性要求不高开源、c语言编写、默认端口号6379、key-value形式存在,存储非结构化数据。_nosql
文章浏览阅读1.5k次,点赞3次,收藏2次。Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket. at redis.clients.jedis.DefaultJedisSocketFactory.createSocket(DefaultJedisSocketFactory.java:110) at redis.clients.jedis.Connection.connect(Conne_redis.clients.jedis.exceptions.jedisconnectionexception: failed to create so
文章浏览阅读6.5k次,点赞3次,收藏12次。readAnyDatabase(在所有数据库上都有读取数据的权限)、readWriteAnyDatabase(在所有数据库上都有读写数据的权限)、userAdminAnyDatabase(在所有数据库上都有管理user的权限)、dbAdminAnyDatabase(管理所有数据库的权限);:clusterAdmin(管理机器的最高权限)、clusterManager(管理和监控集群的权限)、clusterMonitor(监控集群的权限)、hostManager( 管理Server);_mongodb创建用户密码并授权
文章浏览阅读593次。Redis是一个基于内存的键值型NoSQL数据库,在实际生产中有着非常广泛的用处_搭建本地redis
文章浏览阅读919次。Key 的最佳实践[业务名]:[数据名]:[id]足够简短:不超过 44 字节不包含特殊字符Value 的最佳实践:合理的拆分数据,拒绝 BigKey选择合适数据结构Hash 结构的 entry 数量不要超过 1000(默认是 500,如果达到上限则底层会使用哈希表而不是 ZipList,内存占用较多)设置合理的超时时间批量处理的方案:原生的 M 操作Pipeline 批处理注意事项:批处理时不建议一次携带太多命令。Pipeline 的多个命令之间不具备原子性。_redis高级实战
文章浏览阅读1.2k次。MongoDB 递归查询_mongodb数据库 递归
文章浏览阅读1.2k次。通过实际代码例子介绍:如何通过MongoTemplate和MongoRepository操作数据库数据_springboot操作mongodb
文章浏览阅读687次,点赞7次,收藏2次。首先欢迎大家阅读此文档,本文档主要分为三个模块分别是:Redis的介绍及安装、RedisDesktopManager可视化工具的安装、主从(哨兵)模式的配置。_redis 主从配置工具
文章浏览阅读764次。天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。有人说,组 CP,除了要了解她外,还要给机会让她了解你。那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提升性能。我遵守 BSD 协议,由意大利人 Salvatore Sanfilippo 使用 C 语言编写的一个基于内存实现的键值型非关系(NoSQL)..._redis 7.2 源码
文章浏览阅读2k次。MongoDB 的增删改查【1】_mongodb $inc