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

Redis专题(二)——Redis数据类型(1)

2、获取键 KEYS 获取键值,可以用KEYS* 获取所有的键,也可以用KEYS a*获取所有a开头的键。该方法会遍历所有的键,影响性能,不建议使用。...获取:GET key。get不存在的键,会返回(nil)。 用PHP连接redis,并接收命令行的参数,使用set和get操作redis,如下: <?...redis中的操作都是都是原子操作,因此有多个客户端并发对某个键使用INCR,最后的结果加1次,不会出现多次加的情况。...1、设置与获取 1)单次单个:HGETkey field、HSET key field value 2)单次多个:HMGETkey field1 field2… 、HMSET...2、判断 1)field是否存在:HEXISTSkey field 2)field不存在赋值:HSETNXkey field value,由于具有原子性,多个hsetnx

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

最近,我用pandas处理了一把大数据……

首先简单介绍下场景:数据是每个月一份的csv文件,字段数目10个左右,单个文件记录数约6-8亿之间,单个文件体积50G+的样子。...然而对于处理这个50G的csv文件而言,直接使用是肯定不行的,当前个人电脑内存普遍在8G-16G内存之间,笔者的是一台8G内存的工作机,除去系统占用基本留给用于加载数据的空间不到6G,另一方面通过多次试验结果...但合理的设置两个参数,可以实现循环读取特定范围的记录 usecols:顾名思义,加载文件中特定的字段,非常适用于数很多而实际需其中部分字段的情况,要求输入的列名实际存在于表中 ?...不同于C++中的手动回收、Java中的自动回收,Python中的对象采用引用计数管理,计数为0内存回收。所以,如果一个变量不再需要使用时,最简单的办法是将其引用数-1,以加速其内存回收。...del xx gc.collect() 03 时间字段的处理 给定的大文件中,时间字段是一个包含年月日时分秒的字符串列,虽然在read_csv方法中自带了时间解析参数,但对于频繁多次应用时间进行处理

1.3K31

布隆过滤器实战【防止缓存击穿】

适合的场景 数据库防止穿库 Google Bigtable,Apache HBase和Apache Cassandra以及Postgresql 使用BloomFilter来减少不存在的行或的磁盘查找。...首先针对本地BloomFilter检查任何URL,并且BloomFilter返回肯定结果对所执行的URL进行全面检查(并且用户警告,如果它也返回肯定结果)。...然后将查询结果放在缓存中即使数据不存在,也需要创建一个缓存,用来防止穿库。这里需要区分一下数据是否存在。 如果数据不存在,缓存时间可以设置相对较短,防止因为主从同步等问题,导致问题被放大。...k都在s中,认为i重复 if not k - s: collision += 1 continue # 将散结果k更新到集合...匹配结果只能是“绝对不在集合中”,并不能保证匹配成功的值已经在集合中。 集合快满,即接近预估最大容量,误报的概率会变大。 数据占用空间放大。

1.5K30

Excel VBA解读(146): 使用隐式交集处理整列

Excel希望获得单个单元格引用但却提供给它单元格区域,Excel会自动计算出单元格区域与当前单元格的行或相交的区域并使用。例如下图1所示: ?...如果在单元格C2中输入数组公式: =A:A 即输入后按Ctrl+Shift+Enter完成输入,会获取A中的第1个数据,如下图3所示。 ?...Excel非常有效地执行隐式交集,单个单元格引用传递给公式或函数,而不是整个区域。...并且只将该单个单元格视为从属单元格,因此单个单元格被改变而不是该单元格区域中的任何单元格被改变重新计算公式或函数。...图6 如上图6所示,在函数参数前添加一个+号后,Excel传递给UDF单个单元格。

4.7K30

Redis字符串命令和Redis 哈希命令分析

key value 设置键的值,不存在 10 SETRANGE key offset value 在指定偏移处开始的键处覆盖字符串的一部分 11 STRLEN key 获取存储在键中的值的长度...12 MSET key value [key value …] 为多个键分别设置它们的值 13 MSETNX key value [key value …] 为多个键分别设置它们的值,不存在...2 HEXISTS key field 判断是否存在散字段。 3 HGET key field 获取存储在指定键的哈希字段的值。...increment 将哈希字段的浮点值按给定数值增加 7 HKEYS key 获取哈希中的所有字段 8 HLEN key 获取中的字段数量 9 HMGET key field1 [field2]...12 HSETNX key field value 字段不存在设置散字段的值 13 HVALS key 获取哈希中的所有值

25200

干货!直观地解释和可视化每个复杂的DataFrame操作

结果是ID的值(a,b,c)和值(B,C)及其对应值的每种组合,以列表格式组织。 可以像在DataFrame df上一样执行Mels操作 : ?...爆炸,其中的所有列表将作为新行列在同一索引下(为防止发生这种情况, 此后只需调用 .reset_index()即可)。...作为另一个示例,级别设置为0(第一个索引级别),其中的值将成为,而随后的索引级别(第二个索引级别)将成为转换后的DataFrame的索引。 ?...how参数是一个字符串,它表示四种连接 方法之一, 可以合并两个DataFrame: ' left ':包括df1的所有元素, 其键为df1的键 包含df2的元素 。...包括df2的所有元素, 其键是df2的键 包含df1的元素 。 “outer”:包括来自DataFrames所有元素,即使密钥不存在于其他的-缺少的元素被标记为NaN的。

13.3K20

Mysql - 数据库面试题打卡第二天

(2nd NF- 每个表只描述一件事情) 首先满足第一范式,并且表中非主键不存在对主键的部分依赖。...[2nf.png] 13、第三范式(3rd NF- 不存在对非主键的传递依赖) 第三范式定义是,满足第二范式,并且表中的不存在对非主键的传递依赖。...可以对视图进行增,改,查,操作,试图通常是有一 个表或者多个表的行或的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表 查询 18、什么是内联接、左外联接、右外联接?...不可重复读(Unrepeatable read): 指在一个事务内多次读同一数据。在这个事务还没有结束,另 一个事务也访问该数据。...不可重复读和幻读区别: 不可重复读的重点是修改比如多次读取一条记录发现其中某些的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现记录增多或减少了

53950

查询优化器基础知识—SQL语句处理过程

数据库在应用程序的指示下解析语句,这意味着只有应用程序可以减少解析的数量。 当应用程序发出SQL语句,应用程序会对数据库进行解析调用以准备要执行的语句。...在硬解析期间,数据库多次访问库高速缓存和数据字典高速缓存以检查数据字典。 数据库访问这些区域,它会在所需对象上使用称为锁存器的序列化设备,以便它们的定义不会更改。...在查询中,执行游标会将查询结果放入一组称为结果集的行中。 3.2.1 如何获取行集 结果集行可以一次提取一行,也可以按组提取。 在 fetch 阶段,数据库选择行,如果查询请求,则对行进行排序。...每次连续提取都会检索结果的另一行,直到获取最后一行。 通常,在获取最后一行之前,数据库无法确定查询要检索的行数。...3.2.3 数据变更 必须更改数据的 DML 语句使用读取一致性来检索修改开始与搜索条件匹配的数据。 之后,这些语句将检索存在于当前状态的数据块并进行必要的修改。

3.9K30

PG15加速排序性能

Sort算子的结果PG15仅存储一个Datum,意味着tuple不必再拷贝到sort的内存。...元组大小超过另一个 2 的幂,每一步都对齐。 2) 而对于 PG 15,您看不到与 Postgres 14 一样(7 、15 和 31 )查询时间明显更长的“步骤”。...合并单个磁带的算法已更改为使用k 路合并。磁带数量很大,所需的 I/O 比原来的多相合并算法要少。 对大型排序的执行速度提升了近43%。...例如, PG 在排序期间比较两个值,它需要检查 NULL。这对于几个值来说是相当便宜的,但请记住,这种比较必须进行多次。比较的成本迅速增加。...如果 PG 在存储记录通过检查它们已经知道不存在 NULL,那么在比较两条记录以进行排序时就不需要检查 NULL。许多都有 NOT NULL 约束,因此这种情况应该很常见。

1.2K10

大厂都聊分布式系统,面试不知道分布式锁如何聊下去

小小白:使用key来作为是否上锁的标志,通过getLock(String key)方法获得相应的锁之后,这个key即作为一个锁存储到Redis集群中,在接下来如果有其他的线程尝试获取名为key的锁,...,服务恢复后一直获取不到锁,所以,需要在表中新增一,用于记录失效时间,并且需要有定时任务清除这些失效的数据; 不具备阻塞锁特性,获取不到锁直接返回失败,所以需要优化获取逻辑,循环多次获取。...在步骤2,向Redis设置锁,客户端应该设置一个网络连接和响应超时时间,这个超时时间应该小于锁的失效时间。例如你的锁自动失效时间为10秒,则超时时间应该在5-50毫秒之间。...从大多数(这里是3个节点)的Redis节点都取到锁,并且使用的时间小于锁失效时间,锁获取成功。...如果取到了锁,key的真正有效时间等于有效时间减去获取锁所使用的时间(步骤3计算的结果); 如果因为某些原因,获取锁失败(没有在至少N/2+1个Redis实例取到锁或者取锁时间已经超过了有效时间),客户端应该在所有的

68510

猎豹移动面试官:如何通过布隆过滤器防止缓存击穿

Redis实战学习笔记 适合的场景 数据库防止穿库 Google Bigtable,Apache HBase和Apache Cassandra以及Postgresql 使用BloomFilter来减少不存在的行或的磁盘查找...首先针对本地BloomFilter检查任何URL,并且BloomFilter返回肯定结果对所执行的URL进行全面检查(并且用户警告,如果它也返回肯定结果)。...然后将查询结果放在缓存中即使数据不存在,也需要创建一个缓存,用来防止穿库。 这里需要区分一下数据是否存在。如果数据不存在,缓存时间可以设置相对较短,防止因为主从同步等问题,导致问题被放大。...from=pc] 只有一个hash函数:很容易发生冲突。 [761e9442c8774c478fc1663020a25e7a?from=pc] 可以看到上面1和2的hash结果都是7,发生冲突。...匹配结果只能是“绝对不在集合中”,并不能保证匹配成功的值已经在集合中。 集合快满,即接近预估最大容量,误报的概率会变大。 数据占用空间放大。

41620

mysql floor报错注入_mysql报错注入总结

,每次执行sql语句多次计算rand(0),rand(0)产生的值是总是固定的,不管执行多少次语句,多次计算的rand(0)的前30条总是和上面得计算结果一样,那么可以做出结论之后的结果也总是一样,观察上述计算结果...count(),group by聚合函数分组计算,mysql会创建一个虚拟表,虚拟表由主键和count()组成,同时floor(rand(0)2)这个值会被计算多次,这一点很重要,计算多次是指在取数据表数据使用...group by,进行一次floor(rand(0)2),如果虚拟表中不存在此数据,那么在往虚拟表插入数据,floor(rand(0)2)将会再被计算一次,接下来分析,取数据表第一条记录第一次使用...group by,计算floor(rand(0)2)的值为0,查询虚拟表发现0这个主键不存在,于是再次计算floor(rand(0)2)结果为1,将1作为主键插入虚拟表,这时主键1的count()值为1...by,计算floor(rand(0)2)值为0,查询虚拟表,发现0的键值不存在,于是再一次计算floor(rand(0)2),结果为1,尝试将1插入虚拟表中,发现主键1已经存在,所以报出主键重复的错误

2.5K40

python数据科学系列:pandas入门详细教程

或字典(用于重命名行标签和标签) reindex,接收一个新的序列与已有标签匹配,原标签不存在相应信息,填充NAN或者可选的填充值 set_index/reset_index,互为逆操作,...自然毫无悬念 dataframe:无法访问单个元素,只能返回一、多或多行:单值或多值(多个列名组成的列表)访问进行查询,单值访问不存在列名歧义还可直接用属性符号" ....切片形式访问按行进行查询,又区分数字切片和标签切片两种情况:输入数字索引切片时,类似于普通列表切片;输入标签切片时,执行范围查询(即无需切片首末值存在于标签中),包含两端标签结果,无匹配行时返回为空...例如,标签类型(可通过df.index.dtype查看)为时间类型,若使用无法隐式转换为时间的字符串作为索引切片,则引发报错 ? 切片形式返回行查询,且为范围查询 ?...与[ ]访问类似,loc按标签访问也是执行范围查询,包含两端结果 at/iat,loc和iloc的特殊形式,不支持切片访问,仅可以用单个标签值或单个索引值进行访问,一般返回标量结果,除非标签值存在重复

13.8K20

C#3.0新增功能09 LINQ 标准查询运算符 03 按执行方式的分类

返回单个不可枚举的结果的所有标准查询运算符都立即执行。 推迟 延迟执行指的是不在代码中声明查询的位置执行运算。 对查询变量进行枚举执行运算,例如通过使用 foreach 语句执行。...这意味着,查询的执行结果取决于执行查询而非定义查询的数据源内容。 如果多次枚举查询变量,则每次结果可能都不同。...流式处理运算符将持续读取源元素直到可以生成结果元素。 这意味着可能要读取多个源元素才能生成一个结果元素。 非流式处理 非流式处理运算符必须先读取所有源数据,然后才能生成结果元素。...如果某个运算符被标入两个中,则表示在运算中涉及两个输入序列,每个序列的计算方式不同。 在此类情况下,参数列表中的第一个序列始终以延迟流式处理方式来执行计算。...T> X X Join IEnumerable X X Last TSource X LastOrDefault TSource X LongCount Int64 X Max 单个数值

49620

CMU 15-445 -- Query Processing - 07

Iterator 几乎被用在每个 DBMS 中,包括 sqlite、MySQL、PostgreSQL 等等,其它需要注意的是: 有些 operators 会等待 children 返回所有 tuples 后执行...Model 是 Iterator 与 Materialization Model 折衷的一种模型: 每个 operator 实现一个 next 函数,但每次 next 调用返回一批 tuples,而不是单个...---- Late Materialization 在存储 DBMS 中,每个 operator 只选取查询所需的数据,若该数据在查询树上方并不需要,则需向上传递 offsets 即可: --...---- Index Scan Page Sorting 使用的不是 clustering index ,实际上按 index 顺序检索的过程是非常低效的,DBMS 很有可能需要不断地在不同的 pages...如下图所示: 回表查询前,将查询涉及到的page id进行排序,以此将多次乱序的回表查询转换为尽量顺序的回表查询,还可以合并多次回表查询为一次。

12320

【21】进大厂必须掌握的面试题-65个SQL面试

完全联接: 任何表中都存在匹配项,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。 Q16。您所说的非规范化是什么意思?...对特定表执行插入,更新或任何其他查询,它允许您执行一批代码。 Q25。SQL中有哪些不同的运算符?...此递归函数或过程可帮助程序员多次使用同一组代码。 Q40。什么是SQL中的CLAUSE? SQL子句通过为查询提供条件来帮助限制结果集。子句有助于从整个记录集中过滤行。...约束是用于强制执行数据实体和一致性的的表示。约束有两个级别,即: 级约束 表级约束 Q44。如何从两个表中获取公用记录? 您可以使用INTERSECT从两个表中获取公用记录。...优点: 可以将存储过程用作模块化编程,这意味着一次创建,存储并在需要多次调用。这支持更快的执行。它还可以减少网络流量,并为数据提供更好的安全性。

6.3K22

Java核心知识点整理大全21-笔记

第三范式(3rd NF- 不存在对非主键的传递依赖) 第三范式定义是,满足第二范式,并且表中的不存在对非主键的传递依赖。除了主键订单编 号外,顾客姓名依赖于非主键顾客编号。 19.1.4....,只有等自己的整个事务提交了,释放自己加上的锁,允 许其他用户访问那部分数据。...获取锁的时候,使用 setnx(SETNX key val: key 不存在,set 一个 key 为 val 的字符串,返回 1;若 key 存在,则什么都不做,返回 0)加锁,锁的 value...水平切分(按照规则划分存储)  一个表中的数据量过大,我们可以把该表的数据按照某种规则,例如 userID 散,进行 划分,然后存储到多个结构相同的表,和不同的库上。 19.1.11....一个事务跨越多个节点,为了保持事 务的 ACID 特性,需要引入一个作为协调者的组件来统一掌控所有节点(称作参与者)的操作结果并 最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等

10610

(转)java正则表达式(二)

此方法编译表达式并在单个调用中将输入序列与其匹配。...子表达式 X 在 此位置的右侧匹配继续匹配。例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。 (?!X) 零宽度负先行断言。...子表达式 X 不在 此位置的右侧匹配继续匹配。例如,例如,\w+(?!\d) 与后不跟数字的单词匹配,而不与该数字匹配。 (?<=X) 零宽度正后发断言。...子表达式 X 在 此位置的左侧匹配继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。 (?<!X) 零宽度负后发断言。...子表达式 X 不在此位置的左侧匹配继续匹配。例如,(?<!19)99 与不跟在 19 后面的 99 的实例匹配 说明: 非捕获组中四个表达式的区别: (?=X ) 和(?!

69920

那些年我们写过的T-SQL(上篇)

在实际项目中,数据库的设计需要保证基本不犯明显的错误即可,其他的到出现性能问题通过查询计划和查询统计信息去优化,不用过度设计,因为数据量没变化一个量级可能调优的方式就会出现不同。...GROUP BY字句:涉及分组,其后续的所有操作都是对组的操作而不是对单个行的操作,每组均是一个单个行,这些操作中表达式需要保证返回一个标量。...此外,该字句中可以使用不在SELECT列表中的字段排序,但如果使用了DISTINCT关键字,则必须使用SELECT列表中的,否则由于单个结果行可能代表多个原行,造成排序的不清晰。...JOIN student AS s ON u.name = s.name 之前一直强调的逻辑查询阶段其实相对应与物理查询阶段的,由于数据库查询分析器的存在,有时看起来有性能问题的联接也能运行的很好,所以遇到查询性能问题...只获取外部行,即订单不存在的用户记录:SELECT c.custid, c.companyname FROM sale.customer AS c LEFT OUTER JOIN sale.order

3.1K100
领券