2026-10-21 04:41:03
Redis是一种内存数据库,属于NoSQL非关系型数据库,具有高速数据存取能力,适用于高并发场景,被淘宝、京东、抖音、微信等广泛应用。
定义:Redis是一种内存数据库,数据存储在内存中,属于NoSQL非关系型数据库。
分类:
按数据存储位置:分为磁盘数据库(如MySQL、Oracle)和内存数据库(如Redis)。内存数据库存取速度快,但内存成本较高,通常与磁盘数据库搭配使用。
按数据关系模型:分为关系型数据库(如MySQL、Oracle)和非关系型数据库(如Redis、MongoDB)。非关系型数据库适用于数据量剧增、需要缓存层的场景。

Redis的典型特征
单线程模型:Redis采用单线程设计,但能承受每秒几百万的请求量,原因如下:
维护性更好:单线程模型便于开发和调试,无需处理多线程的并发控制问题(如加锁、死锁)。
高效处理请求:通过I/O多路复用机制并发处理客户端请求,减少系统开销,无需额外创建和维护线程。
性能瓶颈不在CPU:Redis是内存数据库,瓶颈通常在于网络I/O而非CPU,因此无需多线程充分利用CPU资源。
Redis的基础数据结构
Strings(字符串):
支持设置值(set key value)、获取值(get key)、批量设置(mset key1 value1 key2 value2)、批量获取(mget key1 key2)、自增(incr key)、自减(decr key)等操作。

支持设置字典值(hset key field value)、批量设置(hmset key field1 value1 field2 value2)、获取字典值(hget key field)、获取全部值(hgetall key)等操作。

支持从左入栈(lpush key item1 item2)、从右入栈(rpush key item1 item2)、从左出栈(lpop key)、从右出栈(rpop key)、在指定元素前后添加元素(linsert key before|after item newitem)、删除指定元素(lrem key count value)等操作。

元素不重复,支持添加元素(sadd key value)、删除元素(sdel key value)、判断元素是否存在(sismember key value)、随机获取元素(srandmember key count)、获取集合交集(sinter set1 set2)、差集(sdiff set1 set2)、并集(sunion set1 set2)等操作。

支持根据分数排序,适用于排行榜、成绩排名等场景。

缓存:存储热点数据,提高数据获取速度。
时效性控制:如验证码有效期控制,超过指定时间后失效。
计数器:实现点赞数、浏览数、收藏数等递增操作。
社交列表:存储用户点赞列表、粉丝列表等,使用Hash类型数据结构。
记录用户判定信息:判断用户是否点赞、收藏或分享。
排行榜:根据某个值排序,获取最新、最热或点击率最高的排名列表。
最新动态:按时间顺序排列获取最新动态。
消息队列:通过List类型的push和pop功能实现消息中间件功能。