缓存,Redis的机制及与MongoDB的对比

1

MongoDB与Redis区别

①. 性能方面:redis要大于mongodb

②. 操作的便利性:

a. Mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富

b. Redis数据结构方面丰富一点

③. 内存空间大小和数据量大小:

a. Mongodb适合大量数据的存储

④. 数据一致性

a. Redis事务支持比较弱

b. Mongodb不支持事务

⑤. 应用场景:

a. Redis用在数据量较小的操作和运算上

b. Mongodb:主要解决海量数据的访问效率问题


2

在项目中缓存用在哪里

在项目中经常会被查询,但不经常会被修改和删除的数据,比如:数据字典

3

Redis如何持久化

持久化就是将内存中的数据写入到硬盘中

①. RDB:是将数据写入到一个临时文件(dump.rdb),持久化结束之后,用这个临时文件替换上次持久化的文件,达到数据恢复。RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失,所以这种方式更适合数据要求不严谨的时候,默认开启的

AOF:是将执行过的指令记录下来,数据恢复时按照从前到后的顺序再将指令执行一遍,实现数据恢复。AOF的优点是可以保持更高的数据完整性,但是AOF文件比RDB文件大,且恢复速度慢,默认是关闭的

4

Redis的内存淘汰策略有那些

Redis的内存淘汰指的是用户存储的一些键可以被redis主动从实例中删除,从而产生读miss的情况,内存淘汰是为了更好的使用内存,用一定的缓存miss来换取内存的使用率。Redis提供的内存淘汰策略有:

①. noeviction:默认策略,不删除任意数据,但是内存不够时,会直接返回错误

②. Allkeys-lru:从数据集中(包括设置过期时间和未设置过期时间的数据集),优先移除最近未使用的key

③. Volatile-lru:在设置了过期时间的数据集中,优先移除最近未使用的key

④. Allkeys-random:从数据集中(包括设置过期时间和未设置过期时间的数据集),随机移除某个key

⑤. Volatile-random:在设置了过期时间的数据集中,随机移除某个key

Volatile-ttl:在设置了过期时间的数据集中,具有更早过期时间的key优先移除

5

redis有哪些数据类型

①. String(字符串):redis最基本的数据类型,一个key对应一个value,一个键最大能存储512MB

②. Hash(哈希):是一个键值对集合,特别适合用于存储对象

③. List(列表):存放多个字符串值,可以重复,按照插入顺序进行排序,也可以添加一个元素到列表的头部和尾部

④. Sets(集合):存放多个值,不可以重复,没有顺序

⑤. ZSet(有序集合):存放多个值,不可以重复,有顺序。不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序

6

Redis一般用在那些场景

①. 缓存热数据使用,热数据就是在项目中经常会被查询,但不经常会被修改和删除的数据

②. 计数器,诸如统计点击数等应用

③. 队列

④. 位操作(大数据处理),比如统计QQ用户在线

⑤. 分布式锁和单线程机制

⑥. 最新列表

⑦. 排行榜,使用zadd添加有序集合

7

集群

至少需要3台缓存服务器(企业一般用6台服务器搭建集群(从主模式))

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用redis-py库和pymongo库来操作RedisMongoDB。 要使用Redis作为缓存,可以使用redis-py库。首先需要安装redis-py库,然后在Python代码中导入redis模块。接下来,可以使用redis模块的相关方法来与Redis进行交互。例如,可以使用set方法将数据缓存Redis中,使用get方法从Redis中获取数据。此外,还可以使用expire方法为缓存设置过期时间,使用delete方法从Redis中删除缓存等。 要使用MongoDB作为主数据库,可以使用pymongo库。首先需要安装pymongo库,然后在Python代码中导入pymongo模块。接下来,可以使用pymongo模块的相关方法来与MongoDB进行交互。例如,可以使用insert_one或insert_many方法将数据插入到MongoDB中,使用find方法查询数据,使用update_one或update_many方法更新数据,使用delete_one或delete_many方法删除数据等。 在使用RedisMongoDB的组合方式中,可以将经常被访问的数据缓存Redis中,从而提高访问速度。当需要获取数据时,首先尝试从Redis中获取,如果不存在则从MongoDB中获取,并将获取的数据缓存Redis中。同时,还可以通过设置合适的过期时间,以保证缓存的数据不会过时。 需要注意的是,在将数据缓存Redis中时,应该根据实际需求选择适当的数据结构(如字符串、哈希、列表、有序集合等),以满足不同的缓存需求。在使用MongoDB作为主数据库时,需要根据实际情况设计合理的数据模型和索引,以支持高效的数据存储和查询操作。 总之,通过使用Python操作redismongodb,结合redis作为缓存mongodb作为主数据库,可以提高数据的读写效率和性能,并实现灵活可扩展的数据存储方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值