什么是Redis

1.基本概念

Redis 是一个高性能的key-value数据库。 Redis的出现,很大程度补偿了memcached这类key-value数据库存储的不足,在部分场合可以对其他数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便

这里所说的数据库和传统意义上的数据库不太一样。传统意义上的数据库:SQL Server、MySQL、Oracle, 我们称之为关系型数据库(RDBMS), 而Redis我们称之为NoSQL数据库。

 

Memcached & Redis

MemcachedRedis都是主流的缓存数据库,在技术选型时,经常会拿出来做比较:

数据库描述
Memcached
  • 很早出现的NoSql数据库
  • 数据都在内存中,一般不持久化
  • 支持简单的key-value模式
  • 多线程+锁(memcached)
  • 一般是作为缓存数据库辅助持久化的数据库
Redis
  • 几乎覆盖了Memcached的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
  • 单线程+多路IO复用
  • 一般是作为缓存数据库辅助持久化的数据库

 

Redis是一个开源的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用selectpoll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。

1.Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据 库)。
Redis的优势

2.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1),Redis能读的速度 是110000次/s,写的速度是81000次/s 。

3.支持丰富数据类型,支持string,list,set,sorted set,hash

4.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

5.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除,Redis还支持 publish/subscribe, 通知, key 过期 等等特性。

缺点:
持久化。Redis直接将数据存储到内存中,要将数据保存到磁盘上,Redis可以使用两种方式实现持久化过程。定时快照 (snapshot):每隔一段时间将整个数据库写到磁盘上,每次均是写全部数据,代价非常高。第二种方式基于语句追加 (aof):只追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢。
耗内存,占用内存过高。

 

2.应用场景


2.1缓存

对于一些要返回给前端数据的缓存,当有大量数据库sql操作时候,为了避免每次接口请求都要去查询数据库,可以把一些 数据缓存到Redis中,这样是直接从内存中获取数据,速度回增快很多。
web端用户,用于登陆缓存session数据,登陆的一些信息存到session中,缓存到Redis中

 

2.2 登录session缓存

说明:
web端用户,用于登陆缓存session数据,登陆的一些信息存到session中,缓存到Redis中,没次用户再次登录判断Redis只能 够是否存在或者已过期。

 

2.3 购物车缓存

说明:
每个用户的购物车是一个哈希表,用户id作为key,存储了 itemId 与 商品加车数量之间的关系。购物车提供数量设置,购物 车不随用户登录退出删除。

 

2.4 队列

Redis中提供了list接口,这个list提供了lpush和rpop,这两个方法具有原子性,可以插入队列元素和弹出队列元素。

 

2.5 数据存储

Redis是非关系型数据库,可以把Redis直接用于数据存储,提供了增删改查等操作,因为Redis有良好的硬盘持久化机 制,Redis数据就可以定期持久化到硬盘中,保证了Redis数据的完整性和安全性。


2.6 Redis锁实现防刷机制

Redis锁可以处理并发问题,Redis数据类型中有一个set类型,set类型在存储数据的时候是无序的,而且每个值是不一样的, 不能重复,这样就可以快速的查找元素中某个值是否存在,精确的进行增加删除操作。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值