
Redis
代码学习
代码
展开
-
Redis简介和数据类型
Redis简介简单来说 redis 就是一个非关系型内存键值数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景:键的类型只能为字符串,值支持五种数据类型:字符串String、列表List、集合Set、散列表Hash、有序集合Zset。...原创 2019-07-02 11:17:53 · 146 阅读 · 0 评论 -
Redis学习
1、Redis系列(一)–基础APIhttps://www.cnblogs.com/huigelaile/p/10877091.html2、Redis系列(二)–分布式锁、分布式ID简单实现及思路https://www.cnblogs.com/huigelaile/p/10888339.html3、Redis系列(三)–消息队列、排行榜等https://www.cnblogs.com/h...原创 2019-08-02 11:21:32 · 126 阅读 · 0 评论 -
Redis 常见的性能问题和解决方法
本文来自温柔一刀的分享,介绍了他在实际工作中遇到的一些Redis问题以及对应的规避和解决方案,如果你也在用Redis,那么可能其中有一些经验可供参考。原文链接:http://zhupan.iteye.com/blog/15761081.Master写内存快照save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写...转载 2019-08-01 11:22:09 · 237 阅读 · 0 评论 -
Redis主从复制
为什么有Redis主从复制通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器...原创 2019-08-01 11:16:18 · 201 阅读 · 0 评论 -
Redis 为什么是单线程?
Redis单线程解析redis是单线程,线程安全redis可以能够快速执行的原因:(1) 绝大部分请求是纯粹的内存操作(非常快速)(2) 采用单线程,避免了不必要的上下文切换和竞争条件(3) 非阻塞IO - IO多路复用(IO 多路复用是什么意思?)IO多路复用中有三种方式:select,poll,epoll。需要注意的是,select,poll是线程不安全的,epoll是线程安全的...原创 2019-07-29 15:35:44 · 189 阅读 · 0 评论 -
如何保证缓存与数据库数据一致性
你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几...原创 2019-07-02 15:34:17 · 8270 阅读 · 0 评论 -
如何解决 Redis 的并发竞争 Key 问题
问题说明所谓 Redis 的并发竞争 Key 的问题也就是多个系统同时对一个 key 进行操作,但是最后执行的顺序和我们期望的顺序不同,导致了结果的不同解决方案一:分布式锁(1)如果对这个key操作,不要求顺序这种情况下,准备一个分布式锁,大家去抢锁,抢到锁就做set操作即可,比较简单。(2)如果对这个key操作,要求顺序假设有一个key1,系统A需要将key1设置为valueA,系统...原创 2019-07-02 15:32:36 · 3503 阅读 · 0 评论 -
缓存雪崩 缓存穿透 缓存预热 缓存更新 缓存降级
缓存雪崩简介:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决办法(中华石杉老师在他的视频中提到过,视频地址在最后一个问题中有提到):事前:尽量保证整个 redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL崩掉事后:利用 redi...原创 2019-07-02 15:01:24 · 144 阅读 · 0 评论 -
Redis 持久化机制
为什么要持久化机制持久化数据:就是将内存中的数据写入到硬盘里面,原因:为了之后重用数据(比如重启机器、机器故障之后恢复数据),或者是为了防止系统故障而将数据备份到一个远程位置Redis有哪些持久化操作Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF)RDB 快照持久化Redis通过快照来获得在某个...原创 2019-07-02 14:58:07 · 118 阅读 · 0 评论 -
Redis 设置过期时间 内存淘汰机制
设置过期时间Redis中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的 token 或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。我们 set key 的时候,都可以给一个 expire time,就是过期时间,通过过期时间...转载 2019-07-02 14:36:59 · 3041 阅读 · 0 评论 -
Redis 和 Memcached 的区别
1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)等数据结构的存储。memcache支持简单的数据类型,String。2 、Redis支持数据的备份,即master-slave模式的数据备份。3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重...原创 2019-07-02 14:17:50 · 178 阅读 · 0 评论 -
为什么要用 redis 而不用 map做缓存
参考资料:https://segmentfault.com/q/1010000009106416缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。使用 redis 或 memcached 之类的称为分布式...原创 2019-07-02 11:35:06 · 379 阅读 · 0 评论 -
为什么要使用Redis缓存
Redis的优势主要从“高性能”和“高并发”这两点来看待这个问题。高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!高并发:直接操作缓存能够承受的请求...原创 2019-07-02 11:33:15 · 6633 阅读 · 0 评论 -
Redis作为消息队列与RabbitMQ的比较
Redis 是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时R...原创 2019-06-22 15:04:03 · 1412 阅读 · 0 评论 -
Redis事务
原创 2019-09-09 20:56:43 · 140 阅读 · 0 评论