这是我参与[第五届青训营]伴学笔记创作活动的第16天
什么是Redis?
Redis 是C语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、[消息中间件]等场景,是一种NoSQL(not-only sql,非关系型数据库)的数据库。
为什么需要Redis
- 数据库从单表演变成分库分表
- Mysql从单机演进出了集群
导致了
- 数据量的增长
- 读写数据压力的不断增长
数据分为:冷数据和热数据
热数据是指经常被访问到的数据,所以为了将热数据更好的存储在内存中,就需要用Redis来操作
Redis的特点
- 性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS
- 单进程单线程,是线程安全的,采用IO多路复用机制
- 丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等
- 支持数据持久化。可以将内存中数据保存在磁盘中,重启时加载
- 主从复制,哨兵,高可用
- 可以用作分布式锁
- 可以作为消息中间件使用,支持发布订阅
Redis的五种数据类型
String
String是Redis最基本的数据类型,一个key对应一个value。value是二进制安全的,可以存储jpg图片或者序列化对象,最大可存储512M
- 可以存储 字符串、数字、二进制数据
- 通常和expire配合使用
- 使用场景:存储计数、Session
List
quicklist是由一个双向链表和listpack实现的,插入的时候可以选择插入到队头或者队尾。在进行增删操作的时候效率很高,一般用于消息队列等场景。
Hash
hash类型存储键值对集合,类似于C++中的HashMap类型。hash类型特别适合存储对象,而且可以只修改对象中的某一个属性值
Set
Set是String的无序类型,本质是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。Set可以用于判断共同好友、访问网站IP等需要去重的场合
ZSet
ZSet指的是有序集合,和Set一样是String类型元素的集合,且不允许重复的元素。不同的是每个元素都会关联一个double类型的分数score,Redis根据这个score来对集合中的元素进行排序,当你插入之后就会自动根据score排序。
以上就是关于Redis的一些基本介绍了,我对Redis了解也不多,还请指教!