#redis

redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

Published at March 19, 2019 ·  1 min read

redis 的过期策略和内存淘汰机制,过期策略采用定期(随机)删除,惰性删除,只有用户查询时若过期则删除。但这样会导致被大量冷数据占用,所以又引入了内存淘汰机制,其中,移除最近最少使用的 key 最为常用 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?...


redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

Published at March 19, 2019 ·  1 min read

redis cluster 有固定的 16384 个 hash slot,对每个 key 计算 CRC16 值,然后对 16384 取模,可以获取 key 对应的 hash slot。redis cluster 中每个 master 都会持有部分 slot,比如有 3 个 master,那么可能每个 master 持有 5000 多个 hash slot。hash slot 让 node 的增加和移除很简单,增加一个 master,就将其他 master 的 hash slot 移动部分过去,减少一个 master,就将它的 hash slot 移动到其他 master 上去。移动 hash slot 的成本是非常低的。客户端的 api,可以对指定的数据,让他们走同一个 hash slot,通过 hash tag 来实现。任何一台机器宕机,另外两个节点,不影响的。因为 key 找的是 hash slot,不是机器。 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?...


了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?

Published at March 19, 2019 ·  1 min read

redis 缓存雪崩、缓存穿透、缓存击穿三种问题的解决办法,可通过建立 redis 集群,mysql 没有返回值时缓存为 None,可以将热点数据永不过期或者将数据以一随机时间缓存到另一台 redis 中做备用查询。 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?...



redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

Published at March 19, 2019 ·  1 min read

比较有意思的一篇介绍 redis 常见的数据结构及其应用。比如无序集合 set,可以对两个集合进行交集、并集、差集的操作。对 list 通过 lrange 实现分页查询的效果 redis 都有哪些数据类型?分别在哪些场景下使用比较合适?...


Find and Delete multiple keys matching by a pattern in Redis the right way.

Published at February 27, 2019 ·  1 min read

redis 的一些 best practices,其中包括 keys 与 scan,应该舍去已发生阻塞其他事物,不同于 keys 返回所有的 key,scan 只会返回一部分。另外可以利用 pipeline 实现一次执行多个命令,并能保证事物的原子性 Find and Delete multiple keys matching by a pattern in Redis the right way....


Why is Redis So Fast

Published at February 23, 2019 ·  1 min read

redis 为何如此之快,除了将数据存储到内存外,其充分利用了Linux 中的 epoll/kqueue ,通过 i/o 上的多路复用以及事件驱动,达到了很高的并发 Why is Redis So Fast...


Tags

abcs accept acid activemq affinity algorithm allocation android array async aws b+tree b-tree backoff benchmark best-practices bfs big-o bigquery bind bitcount blog break broker bubble buffer cache cap cert cgroups channel citus class classmethod cluster concurrency config consumer container cookie cors crawler cronjob csrf ctr data-science data-structure database datadog dataflow datascience decorator defer dfs distributed django dns docker double-shipping drf ecosia elastic-search enumerate epoll extra fabric2 facebook-pixel financial-report flask flutter forward-proxy freelance frontend frp garbage-collector gc gcp generator get gil git golang goroutine graphql ha handbook haproxy hash hash-slot hashring hashtable hpa http http-auth http-proxy http_proxy https index init innodb instagram intergration interview ios javascript jinja2 jobboard jwt k8s kafka kibana kqueue label lambda layer4 layer7 lean levels.io linked-list linux list listen loadbalancer logs long-tail lru marketing master matplotlib memory merge metaclass metaprogramming metrics metrics-server microservices mitm model mq myisam mysql namespace nat netflix network-extension nginx nodejs nomad nosql npm oodesign openssl optimization orm pandas parallelism paramiko parkinglot patroni permission pg pipeline pixelme post postgresql postresql prefetch_related prerender private-key process proxy proxycommand put pvm python queue rabbitmq rbac react-native reactjs rebase redis redis-cluster replication resource rest restfulapi retargeting retry revenue reverse-proxy rocketmq rsa saas scaleable search-engine security select seo serverless service session set shadosocks shadowsocks shard sharding shell shopify sigint signal sigterm slack slave slow-query sniper sns socket socks5 source-code spa sql sqlalchemy sqs ssh ssl ssl-pinning stack startup state stateful stateless staticmethod string struct swift switch syscall system-design systemctl tcp tcp-proxy thread tmpreaper token traefik trustkit tunning type typeform udp variable vc vpn vuejs web web-development where yarn zset 削峰 宽索引 异步 窄索引 解耦 跨域 跳板机


Archives

2019 (141)