【二】redis概述
redis是开源的,基于键值对的存储服务系统。
特性
1.高性能:
官方数据每秒可以实现10万次读写,
它将数据存在内存中。存储介质速度又快到慢:register寄存器、L1 cache一级缓存、L2cache 二级缓存、main memory内存、local disk本地磁盘、remote disk远程磁盘。
它由C语言来实现。
2.单线程。
一次只运行一条命令。
使用的时候,避免在生产上用到长命令:keys,flushall,flushdb,slow lua script,mutil/exec,operate big value(collection)。
由于单线程执行命令的特性,redis很适合用来做分布式系统中的唯一id
3.多种数据结构:
主要数据结构5种:string、hash、list、set、zset。
衍生数据结构:新版本中还提供了BigMaps位图(本质是字符串)、HyperLogLog(超小内存唯一值计数、有误差)本质是字符串)、GEO(地理信息定位、本质是有序集合zset)
数据结构与内部编码
4.持久化:
redis中所有数据保存在内存中,对数据的更新将异步的保存到磁盘上。有AOF和RDB两种持久化方式。
5.多种语言编辑:
java、php、python、ruby、lua、node
6.主从复制。
7.高可用(2.8开始sentinel哨兵模式)、分布式(3.0开始redis cluster)。
8.功能丰富:
发布/订阅、lua脚本、简单事务。pipeline。
Redis的典型应用场景:
1.缓存
2.计数器(incr,如用在视频播放计算,微博转发量计算)
3.消息队列系统
4.排行榜(zset)
5.社交网络(粉丝数、关注数)
6.实时系统(垃圾邮件处理系统,过滤器、用位图实现布隆过滤器)