![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 90
郝开
你可以是一本打开的书,但我要比那复杂一点。
展开
-
Redis Lua脚本好处、Redis执行Lua的两种方式、Redis缓存Lua脚本、Redis Lua原子性验证、Lua脚本IP限流、Lua脚本自乘
以客户端执行乘法脚本为例,在redis客户端执行Lua语言,拼接了很多命令,如果这样的一长执行串命令发给服务端,那么网络通信就会产生比较大的开销,所以Redis支持在服务端直接缓存一部分脚本的内容(它是用脚本生成了一段摘要,服务端可以根据这个摘要去执行脚本内容)。Lua脚本实现原子性的原理,就是执行一个Lua脚本的时候,里面有多个命令,这个时候会阻塞其它任何命令的执行和其它任何客户端的请求,也就是说,执行Lua的时候,只会执行Lua里的命令,以此来达到Lua里的多条命令成为一个整体来执行。原创 2022-09-26 16:19:20 · 1995 阅读 · 0 评论 -
Linux安装Redis、远程连接Redis
切换到 /home/pdx_haokai/redis/redis-7.0.4_op/bin目录下执行 redis-server 命令,使用 /home/pdx_haokai/redis/redis-7.0.4_op/etc/redis.conf配置文件来启动redis服务。1)把 redis.conf配置文件中的 bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。解压后目录结构,redis-7.0.4为解压后的文件目录。原创 2022-09-21 15:14:55 · 3883 阅读 · 0 评论 -
Redis源码-ZSet:Redis ZSet存储原理、Redis ZSet命令、 Redis ZSet两种存储底层编码ziplist/dict+skiplist、Redis ZSet应用场景
扩容的量级是原dictht的2的n次方,扩容之后,会把原表的数据重新分配到新表(rehash,重新计算hash),然后用ht[0]标记为当前使用的是哪个表,清空原先的dictht来释放空间。Redis中的Hash结构,在Redis中,所有的KV存储方式都是基于dict(外层Hash表,HashTable)这个结构去存存储的,那么如果value的编码类型也是。有序链表,根据分值去执行插入数据,会从前到后遍历一遍,才能找到合适的位置,时间复杂度O(n),与链表的长度有关,怎么优化一下查找速度?原创 2022-09-09 11:22:43 · 1726 阅读 · 0 评论 -
Redis源码-Set:Redis Set存储原理、Redis Set集合操作命令、Redis Set两种存储底层编码intset+hashtable、Redis Set应用场景
扩容的量级是原dictht的2的n次方,扩容之后,会把原表的数据重新分配到新表(rehash,重新计算hash),然后用ht[0]标记为当前使用的是哪个表,清空原先的dictht来释放空间。Redis中的Hash结构,在Redis中,所有的KV存储方式都是基于dict(外层Hash表,HashTable)这个结构去存存储的,那么如果value的编码类型也是。Redis Set存储的是无序的字符串(String和Hash也是无序的,List和zset是有序的),元素不能重复。商品标签也是同样的道理。原创 2022-08-20 11:53:37 · 959 阅读 · 0 评论 -
Redis源码-List:Redis List存储原理、Redis List命令、 Redis List存储底层编码quicklist、Redis List应用场景
Redis List存储的是有序的字符串(String和Hash是无序的),从左到右的队列,因此往队列中追加和弹出元素,也是需要区分左右的。Redis数据类型不等同与数据结构,数据结构是Redis该数据类型存储结构的存储原理,也是该数据类型的底层编码。Redis List存储的是有序的字符串(String和Hash是无序的),从左到右的队列,元素可以重复。在Redis早期的版本,3.2.0之前,数据量小的是ziplist,大的是linkedlist存储。它不存储指向上一个链表节点和指向下一个链表节点的。..原创 2022-08-17 16:17:03 · 651 阅读 · 0 评论 -
Redis源码-Hash:Redis String与Hash的区别、Redis Hash存储原理、Redis Hash命令、 Redis Hash存储底层编码、Redis Hash应用场景
扩容的量级是原dictht的2的n次方,扩容之后,会把原表的数据重新分配到新表(rehash,重新计算hash),然后用ht[0]标记为当前使用的是哪个表,清空原先的dictht来释放空间。String这样做,key已经占了很大的存储空间(真实场景你拼接的这个key很长),还有value,有点得不偿失,于是Redis提供了存储表格式的数据类型Hash。Redis本身就是KV存储的,这个存储方式是Redis外层的Hash,那么Hash数据结构存储KV结构的数据,这个叫做Redis内层的Hash。.......原创 2022-08-13 12:40:25 · 641 阅读 · 0 评论 -
Redis源码:Redis源码怎么查看、Redis源码查看顺序、Redis外部数据结构到Redis内部数据结构查看源码顺序、Redis KV存储方式都是基于dict
dictEntry的val可以不同数据结构类型,因此很乱,所以设计了redisObject统一管理不同类型的val数据结构,dictEntry的val指向redisObject,redisObject的*ptr指向对象实际的数据结构/ * dictEntry的val可以不同数据结构类型,因此很乱,所以设计了redisObject统一管理不同类型的val数据结构,dictEntry的val指向redisObject,.................................原创 2022-08-08 11:43:27 · 1257 阅读 · 0 评论 -
Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景
编码转换在Redis写入数据时完成,且转换过程不可逆,只能从小内存编码向大内存编码转换(不包括重新set),重新set虽然在值上是修改或插入,但在Redis看来是重新赋值,这里的编码转换指的修改比如说拼接字符串、自增这种,非set的改值操作。Redis的key是字符类型,即String,最大可以用得到是512M,那么它的value字符类型,也是String,最大也是512M。中文标点占三个字节,英文标点占一个字节。1,ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。.原创 2022-08-08 11:41:23 · 652 阅读 · 0 评论 -
Redis key基本命令
命令不需要专门记,tab键会提示命令格式,不是你想要的命令就继续按。原创 2022-07-29 17:25:32 · 238 阅读 · 0 评论 -
Redis介绍、Redis基本特性、关系型数据库、非关系型数据库、数据库发展阶段
翻译过来就是远程字典服务,简称redis。为什么使用redis,需要先弄明白关系型数据库和非关系型数据库的区别,也就是SQL和NoSQL的区别和使用场景。数据库设计的酸(ACID)碱(BASE)原则。原创 2022-07-29 16:11:16 · 346 阅读 · 0 评论