[redis数据库问题] 聊聊你对redis的理解

从Redis的特性来说:

1.  redis数据库是一种非关系型数据库,数据以key-value的形式存储,

2.  它是内存型数据库,数据保存在内存中,所以读写速度很快。

3. 当然它也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用,以保证数据的安全。

4.  Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

5. 而且Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行

 

我们以前的做项目中也广泛的应用到了redis数据库。

比方说我们之前做的一个电商项目,是一个B2C类型,用Django开发的,在这个项目中,我们很多地方用到了Redis数据库。

1.  这个项目采用的是邮件激活的方式,所以就用了celery异步服务器来完成异步发送邮件完成激活。我们在celery异步服务器就是用选用了Redis数据库来做broker做任务存储。

2.  我们这个项目的session信息和缓存数据也是放在Redis数据库中。因为我们数据库用的MySQL,所以session信息默认是放在MySQL中的,但每次访问网页都要去查MySQL,效率太低,所以我们就把session信息放在Redis数据库中。同样的我们未登录用户用ngnix来给他静态页面,登录用户我们给他的是缓存页面,我们这个缓存就是存在Redis数据库里。Django自带了一个缓存系统,我们想把缓存存到Redis就需要在settings中配置django-redis-sessions,配置成一个数据库缓存系统,缓存和session信息都可以存在这个Redis数据库中。

3. 购物车数据是需要有即时性的,所以不能放在缓存里,用户未登录时我们放在cookie中,用户登录时,就放在Redis数据库中,选用Redis数据库时因为那我们频繁切换网页,就需要频繁去查询数据库,Redis读写速度更快。而且购物车信息一般包含user_id, sku_id, count,Redis数据库的hash数据类型更方便存储和读取这些信息。因为hash类型取出来时是字典。

你可能感兴趣的:(面试题,数据库)