
Redis
文章平均质量分 86
Redis是项目开发中比较常用的缓存中间件,不仅能够实现常规的缓存,还有更多的数据结构能够解决不同的业务问题。这里记录的是redis从入门到深入理解并使用的一些笔记。
码农兴哥
纸上得来终觉浅,绝知此事要躬行。
展开
-
Redis面试核心技术点和缓存相关问题
Redis单线程有一个最大好处就是 节省线程切换的开销,更不用考虑并发读写带来的复杂操作场景,大大节省了线程间切换的时间。单线程模型避免了多线程的频繁上下文切换,这也避免了多线程可能产生的竞争问题。Reids 核心是基于非阻塞的 IO 多路复用机制。优先查询缓存,如果缓存未命中则查询数据库,将结果写入缓存;数据更新时先更新数据库,再删除缓存,然后一段时间后再延迟删缓存(防止并发场景下操作出现问题)。原创 2023-06-05 16:35:42 · 534 阅读 · 0 评论 -
缓存雪崩、缓存击穿、穿透穿透具体指哪些问题?
缓存雪崩是指大量的应用请求无法在 Redis 缓存中进行处理,紧接着应用将大量请求发 送到数据库层,导致数据库层的压力激增。缓存雪崩的一个原因是:缓存中有大量数据同时过期,导致大量请求无法得到处理。解决办法:避免给大量的数据设置相同的过期时间。现在有个电商平台双十一抢购,00:00 的时候把要抢购的一波商品同时放入了缓存,缓存过期的时间比较集中,假设缓存一个小时,那么到了凌晨一点钟的时候这批商品的缓存就都过期了。而对这批商品的访问查询,都落到了数据库上,对于数据库而言,就会产生周期性的压力波峰。原创 2023-05-06 22:33:07 · 268 阅读 · 1 评论 -
Redis底层数据结构和原理
Redis 的基本对象结构 RedisObject,因为 Redis 键值对中的每一个值都是用 RedisObject 保存的。RedisObject 包括元数据和指针。其中元数据的一个功能就是用来区分不同的数据类型,指针用来指向具体的数据类型的值。RedisObject 的内部组成包括了 type,、encoding,、lru 和 refcount 4 个元数据,以及 1个*ptr指针。redis的底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。原创 2023-05-09 05:43:15 · 725 阅读 · 0 评论 -
Redis 常见的性能问题和优化方案
为什么单线程Redis能那么快?因Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的, 但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。并发访问控制一直是多线程开发中的一个难点问题,如果没有精细的设计,即使增加了线程,大部分线程也在等待获取访问共享资源的互斥锁,并行变串行,系统吞吐率并没有随着线程的增加而增加。原创 2023-05-09 19:48:45 · 1551 阅读 · 0 评论 -
Redis命令合集和设计场景
Redis的基本命令可能很多人都知道,但是具体哪些命令应该用在什么场合,解决同一类问题是否有多种方案,每一种方案是否会有不同的性能差异?不用纠结,看看这篇文章,对Redis中的一些基本数据类型的常用场景做了分析,以及一些场景下不同数据结构的优缺点。原创 2023-04-29 16:31:55 · 288 阅读 · 0 评论 -
redis笔记09-PHP操作Redis
到下载stable版(稳定版)扩展,此处下载的是 redis-2.2.4.tgz,vim /usr/local/php/php.ini 在最后面添加 extension=redis.so,原创 2023-04-25 11:28:57 · 432 阅读 · 0 评论 -
redis笔记08-redis集群
redis集群的实现方案列举:1.官方cluster方案:从redis 3.0版本开始支持redis-cluster集群,redis-cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他节点连接。官方推荐的方案是将node配置成主从结构,即一个master主节点,挂n个slave从节点。如果主节点失效,redis cluster会根据选举算法从slave节点中选择一个上升为master节点,整个集群继续对外提供服务。原创 2023-04-24 12:47:46 · 193 阅读 · 2 评论 -
redis笔记07-redis服务器相关命令
TIME查看时间戳与微秒数DBSIZE查看当前库中的key数量后台进程重写AOF,此命令之前说过,可以手动重新写入最终的aofBGSAVE后台保存rdb快照SAVE保存rdb快照LASTSAVE上次保存时间手动保存后,就会立即生成 .rdb 文件;lastsave可以查看上次手动保存rdb的时间。下面两个命令慎用!!!FLUSHALL清空当前服务器的所有db,包括select0,select1,select2....所有的库都会被清空。FLUSHDB只清空当前db.原创 2023-04-24 12:21:36 · 326 阅读 · 0 评论 -
redis笔记05-Redis的事务和消息订阅
Redis支持简单的事务,redis事务支持比较弱,只能保证事务中的每个操作连续执行。Redis 提供了 MULTI、EXEC 两个命令来完成事务。Redis 中并没有提供回滚机制。虽然 Redis 提供了 DISCARD 命令,但是,这个命 令只能用来主动放弃事务执行,把暂存的命令队列清空,起不到回滚的效果。MySQL和Redis操作事务的对比:MySQLRedis开启muitl语句普通sql普通命令失败rollback 回滚discard 取消成功commitexec。原创 2023-04-23 22:41:35 · 338 阅读 · 1 评论 -
redis笔记06-持久化rdb和aof
数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;如果允许分钟级别的数据丢失,可以只使用 RDB;如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个 平衡。原创 2023-04-24 12:00:20 · 324 阅读 · 2 评论 -
redis笔记04-无序集合和有序集合
【无序集合】无需集合的特点: 唯一性,无序性,确定性单个集合的操作作用: 往集合key中增加元素备注:由于具有唯一性,所以增加一个已经存在的元素时会返回0.scard key作用: 返回集合中元素的个数作用: 返回集中中所有的元素作用: 返回集合key中,随机的1个元素.作用: 判断value是否存在key集合中,存在是返回1,不存在返回0。作用: 删除集合中值为 value1 value2的元素;返回值: 忽略不存在的元素后,真正删除掉的元素的个数spop key。原创 2023-04-23 21:32:24 · 929 阅读 · 1 评论 -
redis笔记03-链表和哈希
hincrby/hincrbyfloat key field value:把key中的field域的值增长整型值/浮点值value。lrange key start stop: 返回[start ,stop]的值,全部:0到-1.在 hash 结构中,key 是一个字符串,value 则是一个 key/value 键值对。作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value。作用: 剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key。原创 2023-04-23 21:14:50 · 241 阅读 · 1 评论 -
redis笔记02-字符串相关命令
【Redis 的 key的操作命令】keys */?/[]:查询相应的key;完整匹配:keys site;模糊匹配:keys s*、keys sit[ey]randomkey:随机返回keytype key:判断key的类型 string,set,zset,link,hashexists key:判断key是否存在,返回1/0del key1 key2 ... KeyN :删除1个或多个键rename key newkey:给key赋一个新的key名,原值被覆盖。原创 2023-04-23 20:51:38 · 303 阅读 · 1 评论 -
redis笔记01-安装和启动
redis是开源,BSD许可,高级的key-value存储系统.可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务.redis特点介绍:Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。1:数据结构丰富 2:持久化 3:支持简单事务 4: 主从配置方便原创 2023-04-23 20:18:42 · 148 阅读 · 0 评论