随笔分类 - redis
摘要:Redis的key最好遵循如下规则设计: 1.遵循基本格式 :业务名称:数据名:ID 2.长度不超过44个字节 3.不包含特殊字符 优点: 1.可读性强 2.避免key冲突 3.方便管理 4.更节省内存:key是string类型,底层编码是int,embstr,raw三种,embstr在小于44个字
阅读全文
摘要:Redis的数据库就是使用字典来作为底层实现的,对数据库的增,删,改,查也是构建在对字典的操作之上的。 除了用用来表示数据库之外,字典还用作哈希键的底层实现之一,当一个哈希键包含的键值对比较多,又或者键值对中元素都是比较长的字符串时,Redis就会使用字典作为哈希键的底层实现。 Redis的字典使用
阅读全文
摘要:IntSet是redis集合的一种实现方式,基于整数数组来实现,并且具备长度可变,有序等特征; 整数集合的实现 typedef struct intset{ //编码方式 uint32_t encoding; //集合包含元素的数量 uint32_t length; //保存元素的数组 int8_t
阅读全文
摘要:Redis中保存的key是字符串,value往往是字符串或者字符串的集合,但是redis并没有直接使用c语言中的字符串 原因在于: 1.获取字符串长度需要通过运算 2.非二进制安全 3.不可修改 SDS struct sdshdr{ //记录buf数组中使用字节的数量 //等于SDS所保存字符串的长
阅读全文
摘要:Redis通用命令介绍: KEYS:查看符合模版的所有key, DEL:删除一个指定的KEY EXISTS:判断KEY是否存在 EXPIRE:给一个key设置有效期,有效期到期时该KEY会自动删除 TTL:查看一个key到剩余有效期 示例: 127.0.0.1:6379> exists test_k
阅读全文
摘要:在阅读博客文章时,你可以看到一篇文章被阅读的次数,如果使用mysql, 那么在设计article表时,就必须设置一个view_count字段来记录这篇文章被阅读的次数。 但这种方式相比于使用redis,并不是一种好的办法,原因在于,每次更新view_count字段的值都是一个比较费力的过程。 首先,
阅读全文
摘要:简述布隆过滤器的实现思路: 假设有一个长度为n的比特数组,bit_array,数组里的每一位都是0,对于一个url或者是其他数据,使用hash算法计算出url的散列值,这个散列值当然是一个整数,暂且命名为index,index=index%n,确保index的值小于n,查看bit_array[ind
阅读全文
摘要:有序集合也是集合,不同之处在于,集合里的元素可以附带这个分数,元素不能重复,但是分数可以重复,不仅如此,还可以根据分数进行排序。 很多游戏都有玩家得分的排行榜,这个排行榜随时处于变动中。 游戏有很多玩家,可以设计一张表,记录每一个玩家的分数,并根据玩家新一局的分数来更新这张表,当需要获取排行榜前10
阅读全文
摘要:缓存可以有效的提高关键数据的获取速度,使得不必要每次查询数据库,避免了数据库被击穿。 主动更新: 需要知道这份数据的实效时间点,然后在那个时间点到来时重新更新数据,可能是查询数据库,也可能是访问第三接口,在获得数据之后,更新redis缓存。 被动更新: 程序每次都去redis获取数据,但对这份数据设
阅读全文