Redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis

简单介绍一下 redis

redis是一个key-value类型的非关系型数据库,基于内存也可持久化的数据库,相对于关系 型数据库(数据主要存在硬盘中),性能高,因此我们一般用redis来做缓存使用;

Redis支持5种数据类型,string、hash、list、set、zset(sorted set);



Redis key过期的方式

被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key。

只有key被操作时(如GET),REDIS才会被动检查该key是否过期,如果过期则删除之并且返回NIL。

主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key。

maxmemory当前已用内存超过maxmemory限定时,触发主动清理策略。

volatile-lru:只对设置了过期时间的key进行LRU(默认值)

allkeys-lru : 删除lru算法的key

volatile-random:随机删除即将过期key

allkeys-random:随机删除

volatile-ttl : 删除即将过期的

noeviction : 永不过期


基于 redis 的分布式锁

获取锁的时候调用 setnx,如果返回 0,则该锁正在被别人使用,返回 1 则成功获取 锁。 还设置一个获取的超时时间,若超过这个时间则放弃获取锁。


redis集群同步数据

一个集群只能有16384个槽,编号0-16383。这些槽会分配给集群中的所有主节点,分配策略没有要求。可以指定哪些编号的槽分配给哪个主节点。集群会记录节点和槽的对应关系。

接下来就需要对key求哈希值,然后对16384取余,余数是几key就落入对应的槽里。slot = CRC16(key) % 16384。

以槽为单位移动数据,因为槽的数目是固定的,处理起来比较容易,这样数据移动问题就解决了。

使用哈希函数计算出key的哈希值,这样就可以算出它对应的槽,然后利用集群存储的槽和节点的映射关系查询出槽所在的节点,于是数据和节点就映射起来了,这样数据分配问题就解决了。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
25天前
|
NoSQL Redis
Redis系列
(1)完全基于内存操作,数据都存在内存中 (2)采用单线程,避免了不必要的上下文切换带来的性能问题,也不用考虑锁的问题 (3)基于非阻塞的io多路复用机制 (4)数据结构简单,对数据操作简单
|
6月前
|
SQL NoSQL Redis
|
7月前
|
存储 NoSQL Go
Redis 双端链表
Redis 双端链表
49 0
|
NoSQL Redis
|
消息中间件 存储 负载均衡
|
存储 缓存 NoSQL
|
消息中间件 存储 缓存
什么是 Redis?
什么是 Redis?
73 0
|
NoSQL 安全 Unix
Redis (必看)
Redis 学习点滴 知识分享
89 0
|
NoSQL 程序员 数据库
|
存储 缓存 NoSQL
redis 问答
redis 问答
114 0
redis 问答
下一篇
DataWorks