首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

redis入门指南读书笔记

功能 以字典结构存储数据,并允许其他应用通过tcp连接来读写字典的内容。...所以建议一个redis实例对应存储一个应用的数据,可以将不同数据存储于多个字典,不建议一个redis实例存储多个应用的数据,因为这些字典,或数据库不存在隔离性。 符号 含义 ?.../redis-cli -p 6380 keys \*` 字符串类型 字符串作为redis的基础类型,可以存储任意类型的字符串,包括二进制字符串,或者json化的对象,甚至一张图片,字符串类型允许存储的最大容量是...redis使用键值对形式的字典结构,散列类型也是一种键值对形式的字典结构,存储字段到字段的映射,但字段只能是字符串,不能是其他类型,即不支持嵌套类型,一个散列类型的最多可以有 ?...执行快照的条件是配置文件自定义的,包括两个参数:时间和改动的个数。当在指定时间内,改动的个数达到条件后会触发快照。

1K20

27 个问题,告诉你Python为什么这么设计

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的hash代码。...然后,hash代码用于计算内部数组中将存储的位置。假设您存储都具有不同的hash,这意味着字典需要恒定的时间 -- O(1),用Big-O表示法 -- 来检索一个。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表,这将产生程序的一类难以跟踪的错误。它还使一个重要的字典不变量无效:d.keys() 的每个都可用作字典

6.6K11
您找到你想要的搜索结果了吗?
是的
没有找到

Python官方二十七问,你知道个啥?

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的 hash 代码。...然后,hash 代码用于计算内部数组中将存储的位置。假设您存储都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个。 20....为什么字典 key 必须是不可变的? 字典的哈希表实现使用从键值计算的哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。

2.5K20

27 个问题,告诉你Python为什么这么设计?

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的hash代码。...然后,hash代码用于计算内部数组中将存储的位置。假设您存储都具有不同的hash,这意味着字典需要恒定的时间 -- O(1),用Big-O表示法 -- 来检索一个。...为什么字典key必须是不可变的? 字典的哈希表实现使用从键值计算的哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。

3.1K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的 hash 代码。...然后,hash 代码用于计算内部数组中将存储的位置。假设您存储都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个。 20....为什么字典 key 必须是不可变的? 字典的哈希表实现使用从键值计算的哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。

2.6K20

Python 核心设计理念27个问题及解答

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的 hash 代码。...然后,hash 代码用于计算内部数组中将存储的位置。假设您存储都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个。 20....为什么字典 key 必须是不可变的? 字典的哈希表实现使用从键值计算的哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。

3.3K21

干货 | 27 个问题,告诉你 Python 为什么如此设计?

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,输入以下语句后: >>> x = 1.2 为 x 存储是与十进制的 1.2 (非常接近) 的近似,但不完全等于它。...字典的工作方式是使用 hash() 内置函数计算字典存储的每个的 hash 代码。...然后,hash 代码用于计算内部数组中将存储的位置。假设您存储都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个。 20....为什么字典 key 必须是不可变的? 字典的哈希表实现使用从键值计算的哈希来查找。如果是可变对象,则其可能会发生变化,因此其哈希也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法字典修改条目。然后,当你尝试字典查找相同的对象,将无法找到它,因为其哈希不同。

2.7K10

Ruby Programming | 连载 04 - Ruby 扩展基础

,还安装了 Ruby 语言支持的库和文件使用 ruby 解释器执行代码都能够成功找到所需要的文件或者目录。...Map 字典,是一种 K-V 结构的数据,根据输入的 bindir 就可以获取相应的。..."] rubylibdir 目录存储了 Ruby 编写的标准库文件,可以通过 require 关键字加载这些文件,常用的标准库文件如下: cgi.rb:CGI 编程工具库 fileutils.rb:文件操作工具...当用户安装 gems ,未绑定的库文件会放置 gems 目录。...该代码通过 load 方法加载了 coffee.rb 文件同级目录下创建 coffee.rb,代码如下: puts "服务员:对不起先生,这个是大杯" puts "服务员:这个才是杯" puts

1.2K50

《redis 设计与实现》--总结

一个带有过期字典的数据库例子:(实际空间的和过期字典都指向同一个对象) ?...过期的处理 RDB文件: 生成RDB文件:已过期的不会保存到新创建的RDB文件,因此对生成新的RDB文件没有影响。 载入RDB文件:主服务器模式,过期不会被载入。...RDB文件是一个经过压缩的二进制文件,保存在硬盘,因此Redis进程退出,只要RDB文件仍在,就可以用来还原数据库的状态。 RDB文件的创建和载入 服务器载入RDB文件期间,会一直阻塞。...,写入成功后,再替换之前的文件,用二进制压缩存储。...方便灾难恢复,可以轻松的将一个单独的文件压缩再转移到其他存储介质上。性能最大化。数据集很大,启动效率相对AOF较高。缺点:很难保证高可用,可能数据写入磁盘之前会丢失。

1.1K40

《redis 设计与实现》--总结

空间的也是数据库的,每个可以是字符串对象、列表对象、哈希对象、集合对象,有序集合对象的任意一个Redis对象。 一个空间的例子: ?...#### 过期的处理 1. RDB文件: 生成RDB文件:已过期的不会保存到新创建的RDB文件,因此对生成新的RDB文件没有影响。 载入RDB文件:主服务器模式,过期不会被载入。...RDB文件是一个经过压缩的二进制文件,保存在硬盘,因此Redis进程退出,只要RDB文件仍在,就可以用来还原数据库的状态。...,写入成功后,再替换之前的文件,用二进制压缩存储。...方便灾难恢复,可以轻松的将一个单独的文件压缩再转移到其他存储介质上。性能最大化。数据集很大,启动效率相对AOF较高。缺点:很难保证高可用,可能数据写入磁盘之前会丢失。

77621

深入浅出Redis-redis底层数据结构(上)

我们为什么会说Redis 优于Memcached 呢,因为Redis 的出现,丰富了memcached key-value的存储不足,部分场合可以对关系数据库起到很好的补充作用,而且这些数据类型都支持...,否则最先被程序读入的空字符将被误认为是字符串结尾,这些限制使得C字符串只能保存文本数据,而不能保存想图片,音频,视频,压缩文件这样的二进制数据。     ...链表Redis 的应用非常广泛,比如列表的底层实现之一就是链表。当一个列表包含了数量较多的元素,又或者列表包含的元素都是比较长的字符串,Redis 就会使用链表作为列表的底层实现。...字典,一个(key)可以和一个(value)进行关联,字典的每个都是独一无二的。C语言中,并没有这种数据结构,但是Redis 构建了自己的字典实现。    ...4.3 解决哈希冲突    在上述分析哈希节点的时候我们有讲到:插入一条新的数据,会进行哈希的计算,如果出现了hash相同的情况,Redis 采用了连地址法(separate chaining

1.4K80

常见注入手法第一讲EIP寄存器注入

,我们初始化的标志,这个MSDN是查询不到的,要到定义结构体地方的位置,看注释可以看到....VC++6.0的写法,我下方贴图 ?...其实你把Call 和我写的二进制当做汇编看就行,因为2013的汇编,和VC6.0的汇编二进制代码不一样,因为段的问题,不太一样,所以只能写成那样了 首先,我们介绍下这两个函数的作用吧 第一个Call,...那么现在我们介绍下Jmp的作用 ②.Jmp的作用 Jmp的作用和上面一样,就是JMP标号,其实就是JMP 对标号取内容的值当做地址去执行 为什么这样做,因为我们写完我们的代码要让它回到以前执行的代码位置处...好,告诉你们吧,不正确,因为自己进程Call一个标号,相当于Call一个常量. 那么别人进程也是Call一个常量.但是位置就不一样了 现在我们要解决这个地址重定位问题.

1.9K60

《Redis设计与实现》读书笔记(二) ——Redis字典(Hash)

每个(key)和唯一的(value)关联,是独一无二的,通过对的操作可以对进行增删改查。 redis字典应用广泛,对redis数据库的增删改查就是通过字典实现的。...策略如下:每次写文件操作,都写在特定大小的一块内存(磁盘缓存),并不是直接写到磁盘。只有当我们关闭文件,才写到磁盘上(这就是为什么如果文件不关闭,所写的东西会丢失的原因)。...更有甚者是文件关闭都不写磁盘,而一直等到关机或是内存不够才写磁盘,Unix就是这样一个系统,如果非正常退出,那么数据就会丢失,文件就会损坏。...2、将字典的rehashidx设置成0,表示正在rehash。rehashidx的默认是-1,表示没有rehash。...哈希表采用链地址法避免的冲突,被分配到同一个地址的会构成一个单向链表。rehash对哈希表进行扩展或者收缩过程,会将所有键值对进行迁移,并且这个迁移是渐进式的迁移。

963100

面试官最喜欢问的Redis知识

当哈希表的负载因子小余0.1,程序自动开始对哈希表执行收缩操作。 回顾总结:字典被广泛用于实现redis的各种功能,其中包括数据库和哈希。...a、Redis字典使用哈希表作为底层实现,每个字典带有两个哈希表,一个平时使用,一个仅在进行rehash使用。...b、当字典被用作数据库的底层实现,或者哈希的底层实现时,redis使用murmurHash2算法来计算的哈希 c、哈希表使用链地址法来解决冲突,被分配到同一个索引上的多个键值对会连接成一个单向链表...服务器状态中会保存所有有用save选项设置的保存条件,当任意一个保存条件被满足,服务器会自动执行BGSAVE命令。 RDB文件是一个经过压缩的二进制文件,由多个部门组成。...AOF重写是一个有歧义的名字,该功能是通过读取数据库的键值对来实现的,程序无需对现有AOF文件进行任何读入、分析或者写入操作 执行BGREWIRTEAOF命令,Redis服务器会维护一个AOF重写缓冲区

32820

聊一聊|如何准备python程序设计计算机二级考试

此外,元组只包含一个元素,需要在元素后面添加逗号。...(3)字典(难度:⭐⭐⭐) 字典是另一种可变容器模型,且可存储任意类型对象,字典的每个键值key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括花括号{}。...,val 为字典所有对应的初始 dict.get(key,default=None)返回指定,如果不在字典返回default dict.has_key(key)如果字典dict里返回.../对更新到dict里 dict.values()以列表返回字典的所有 pop(key[,default])删除字典给定 key 所对应的,返回为被删除的。...key必须给出。否则,返回default。 popitem()返回并删除字典的最后一对

1.2K10

Python3使用过程需要注意的点

书写形式 驼峰体(类名) 下划线方式(函数名) 引号的使用        单引号和双引号用法作用相同,只是同行代码中有较多引号需要单引双引交叉使用,以此来方便让解释器和程序员区分所作用域。...():返回一个字典的浅复制 radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典,val为字典所有对应的初始 radiansdict.get(key, default...=None):返回指定,如果不在字典返回default key in dict:如果字典dict里返回true,否则返回false radiansdict.items():以列表返回可遍历的...get()类似, 但如果不存在于字典,将会添加并将设为default radiansdict.update(dict2):把字典dict2的/对更新到dict里 radiansdict.values...key必须给出。 否则,返回default。 popitem():随机返回并删除字典的一对(一般删除末尾对)。

1.6K50

python学习

帮助用户表示一个事物的信息(事物有多个属性) data = {:,:,:} 获取值 info = {"name":'郭希文','age':21,'gender':'男'} #键值对 print...(k,v) key = input('请输入:') #'name' print(info[key]) #info['name'] 给一个空字典,请在空字典添加数据:k1:1,k2:2,k3:3 info...,集合不能放在集合,不能作为字典 深浅拷贝 浅拷贝:拷贝第一次 深拷贝:拷贝所有数据(可变),有时候由于小数据池使得不可变数据地址一样 import copy 文件操作 file_object...data = '我好困' content = data.encode('utf-8') #将字符串按 utf-8编码转换成二进制 #再将二进制写入文件 f.write(content) f.close...函数调用的时候,传入了外部x,外部x为50。函数内部将x改为2,改变的是局部变量x,外部x不受影响,从最后的输出结果可以验证。

80610

信息论IV:宿主、时空置换、V8玄学

就以变长正整数举例,图中不同长度的正整数都是以二进制原码的形式存储的,8bit和16bit这两个范围,【00000000】和【00000000 00000000】都表示实数0,含义相同而字节串不一样...字典是否可压缩,首先还是得看它是否违反之前的2个原则。msp里面,字典类型将每个键值对按照[, , , ...]的方式存储,每个都可以是基本类型或复合类型。...按照的字节码来排序,即将字符串看成一个大整数,然后从小到大排序。编码,每个的位置不再存放本身,而存放比上一个的“增量”,解码通过累加增量得到每个。...虽然我连文件后缀名和mime类型都想好,但UltraPack只是一款活在理论的格式,因为具体的实现和推广上还有无数的困难,所谓的“极限”是否是信息论意义上的极限还很难说。...接近尾声,之前还遗留了一个小问题:为什么msp的性能测试选择python平台而不是更流行的JS/node平台?因为JS/node平台,无论是编码还是解码,msp的速度都远远小于json。

59110

Python 3 入门,看这篇就够了

这样进行修改的方法,其他方法都与列表一样 字典必须是唯一的同时不可变的,则没有限制 元组只包含一个元素,需要在元素后面添加逗号,否则括号会被当作运算符使用 访问元组 访问元组的方式与列表是一致的...字典(dict) 字典是另一种可变容器模型,可存储任意类型对象 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括花括号({}) 必须是唯一的,但则不必...返回指定,如果不在字典返回默认 dict.items() 以列表形式返回可遍历的(, )元组数组 dict.keys() 以列表返回一个字典所有的 dict.values() 以列表返回字典的所有...调用函数,所有函数内声明的变量名称都将被加入到作用域中。 当内部作用域想修改外部作用域的变量,就要用到global和nonlocal关键字。...文件关闭前或缓冲区刷新前,字符串内容存储缓冲区,这时你文件是看不到写入的内容的。

1.7K60
领券