Redis和Memcache的区别及各种数据结构的应用场景

Memcache

使用多线程I/O 充分利用CPU多核优势

功能简单,使用内存存储

key不能超过250个字节

value不能超过1M

key最大失效期是30天

只支持K-V结构,不提供持久化和主从同步功能

Redis

Redis主要采用单线程模式处理请求

Redis支持持久化

支持多种数据类型。

  • 五种基本的数据类型:K-V,List,Set,ZSet,Hash
  • 三种特殊的数据类型:
    • GeospatialL:地理位置
    • Hyperloglog :技术统计
    • Bitmap:位图
使用场景
  • String:缓存功能、计数器、共享用户Session
  • Hash:存对象(没有嵌入其他对象)产品属性单一,使用场景少
  • List:粉丝列表、文章评论、命令Lrange基于list分页,基于Redis实现高性能分页、简单的消息队列
  • Set(无序集合、去重):基于Redis Set的全局去重:微博的共同好友
  • ZsSet(有序集合、去重):排行榜、热搜

Redis提供了主从同步机制,以及Cluster集群部署能力

应用场景:

Geospatial :

场景应用:可用于 实现 获取某个地点的坐标、计算两个地点的直接距离、某个地点坐标多少范围内的地点有哪些等等

(类似现实生活中的附近的人功能)

底层:Geospatial 底层其实是 zset 可以用zset命令操作geo

Hyperloglog:

场景应用: 比如用于统计 UV(网页访问量,一个人访问一个网站多次,但是还是算作一个人),容许误差。

优点: 占用的内存是固定,2^64 不同的元素的技术,只需要废 12KB内存!如果要从内存角度来比较的话 Hyperloglog 首选!

Bitmap:

场景应用: 统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡,365打卡! 两个状态的,都可以使用Bitmaps!

优点: Bitmap 位图,数据结构! 都是操作二进制位来进行记录,就只有0 和 1 两个状态!

​ 365 天 = 365 bit 1字节 = 8bit 46 个字节左右!

Redis是单线程的!!

明白Redis是很快的,官方表示,Redis是基于内存操作的,CPU不是Redis的性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽

Redis是C语言写的,官方提供的数据为 100000+ 的QPS,完全不比Memcache差

Redis为什么单线程还这么快?

读取速度:CPU > 内存 > 硬盘

核心:redis是将所有的数据全部放在内存中,所以说使用单线程去操作效率是最高的。

注意:多线程的话,和CPU调度有关,多线程会产生CPU上下文切换,是一个耗时的操作,对于内存系统来说,没有上下文切换效率就是最高的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值