键值

redis

别说谁变了你拦得住时间么 提交于 2019-12-05 01:15:48
1.概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 2.数据类型 数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 LIST 列表 从两端压入或者弹出元素 对单个或者多个元素 进行修剪,只保留一个范围内的元素 SET 无序集合 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素 HASH 包含键值对的无序散列表 添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在 ZSET 有序集合 添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名 3.数据结构 字典 dictht 是一个散列表结构,使用拉链法保存哈希冲突。 Redis 的字典 dict 中包含两个哈希表 dictht,这是为了方便进行 rehash 操作。在扩容时,将其中一个 dictht 上的键值对 rehash 到另一个 dictht 上面,完成之后释放空间并交换两个 dictht 的角色。 来源:

关于redis中过期的key的处理

孤者浪人 提交于 2019-12-05 00:26:53
一,有三种不同的删除策略 (1),立即清理。在设置键的过期时间时,创建一个回调事件,当过期时间达到时,由时间处理器自动执行键的删除操作。 (2),惰性清理。键过期了就过期了,不管。当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key (3),定期清理。每隔一段时间,对expires字典进行检查,删除里面的过期键。 二,详细说明三种清理方式的优劣 (1)立即清理 立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是 立即删除对cpu是最不友好的 。 因为删除操作会占用cpu的时间,如果刚好碰上了cpu很忙的时候,比如正在做交集或排序等计算的时候,就会给cpu造成额外的压力。 (2)惰性删除 惰性删除是指,某个键值过期后,此键值不会马上被删除,而是等到下次被使用的时候,才会被检查到过期,此时才能得到删除。 所以惰性删除的缺点很明显:浪费内存。dict字典和expires字典都要保存这个键值的信息。 (3)定时删除 从上面分析来看,立即删除会短时间内占用大量cpu,惰性删除会在一段时间内浪费内存,所以定时删除是一个折中的办法。 定时删除是:每隔一段时间执行一次删除操作,并通过限制删除操作执行的时长和频率,来减少删除操作对cpu的影响。 另一方面定时删除也有效的减少了因惰性删除带来的内存浪费。 三

Python数据类型

房东的猫 提交于 2019-12-04 21:01:43
# 列表 # #查 切片 [] print(a)#打印所有列表 print(a[1:3]) #从索引1开始到3结束,但是不包括3 print(a[1::2]) #从索引1开始到结束,步长为2,隔一个去取 print(a[1:-1]) #从索引1开始到倒数第二 print(a[1::-1]) #从索引1开始到结束,从右往左取 print(a[-2::-1]) #从右往左取,从倒数第二个开始到最左边(结束) print(a[1::-1]) #从右往左取,从索引为1开始到结束 b=a.count("ligang")#根据内容查找该元素在列表中出现的次数(计数) print(b) inde=a.index('sanpang')#根据内容找其对应的位置(索引) print(inde) conten='sanpang' in a#in的用法,判断元素是否在列表中,在就返回True,否则返回False print(conten) #添加 append insert a.append('wangyuan')#直接追加在列表最后面 a.insert(2,'liyifen')#设置索引,指定添加位置,可以添加到任意位置 print(a) a.extend(t)#扩展列表,将2个列表合并,这里将t列表融入到a列表中 print(a) #修改   a[1]='wangmei'#根据a[index

数据类型——字典和集合

我怕爱的太早我们不能终老 提交于 2019-12-04 20:32:57
一、字典 1、字典的表示方法 字典的定义:通过 {} 来表示字典 字典中每一条数据都是有一个键值对来组成 key:value ,每个键值对用逗号隔开 字典中的 key 是唯一的(不能重复) key 只能是不可变的数据类型(建议 key 全部使用字符串) key 对应的 value 值可以是任意的数据类型 2、 字典的增删查改 (1)添加元素 通过键直接赋值,就可以增加元素 dic={ "name" : 'xiaoming' , "age" :12} dic[ "height" ]=1.70 update方法 一次添加多个元素 (2)修改元素 通过指定的键修改对应的值 dic[ "height" ]=1.8 (3)查找元素 通过键去找这个键对应的值,如果不存在会报错 print(dic[‘aa’]) get 方法 通过键去找这个键对应的值,如果键不存在,返回 None dic={ "aa" :11, "bb" :22, "cc" :33} print(dic.get( "aa" )) keys 方法 获取字典中所有的键 print(list(dic.keys())) # 将获取的键转换为列表 value 方法 获取字典中所有的值 print(list(dic.values())) items 方法 获取所有的键值对 print(list(dic.items())) (4)删除元素

异步通知

帅比萌擦擦* 提交于 2019-12-04 18:51:00
① 轮询 :应用程序不断read;驱动程序不断read,占用大量的 cpu 资源。 ② 中断 :应用程序阻塞在read;驱动程序休眠,只有发生中断时,驱动程序唤醒,读取键值,返回给应用程序;应用程序执行下一步。 ③ poll :应用程序在一定的时间内(用户定义),不断检测用户设置的flag,超时执行下一步;驱动程序在发生中断时,标记用户设置的flag。 ④ async :应用程序不会阻塞,不影响当前进程的其他任务的执行,只有在接收到驱动程序发送过来的信号,才去读取键值;在发生中断时,驱动程序发送信 号给应用程序(通过进程号),通知应用程序读取键值。 当按键中断发生时,发送信号给应用程序,应用程序再去读取键值,避免进程阻塞在 read() 函数,提高系统运用效率。 实例 driver 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <linux/irq.h> 7 #include <asm/uaccess.h> 8 #include <asm/irq.h> 9 #include <asm/io.h> 10 #include <asm/arch

2-了解DBMS

安稳与你 提交于 2019-12-04 15:16:41
1.DB,DBS,DBMS的区别是什么? 1.1 DB 就是数据库,数据库是存储数据的集合,可理解为多个数据表 1.2 DBS 数据库系统,包括数据库,数据库管理系统和数据库管理人员DBA 1/3 DBMS 数据库管理系统,可对多个数据库进行管理 ,DBMS = 多个数据库(DB) + 管理程序,如Oracle,MySQL等。 2.数据库类型(模式)--关系型数据库SQL和非关系型数据库NOSQL 2.1 关系型数据库是DBMS的主流,使用最多的DBMS主要是Oracle,MySQL和SQL Server。 2.2 非关系型数据库包括键值型数据库,文档型数据库,搜索引擎和列存储,以及图形数据库 2.2.1 键值型数据库-通过Key-Values键值的方式来存储数据,其中Key和Values可以是简单的对象,也可以是复杂的对象。Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,同时缺点也很明显,它无法像关系型数据库一样自由使用条件过滤,如果你不知道去哪里找数据,就需要遍历所有的键,这就会消耗大量的计算键值型数据库最典型的应用场景就是作为内容缓存,如Redis。 2.2.2 文档型数据库-用来管理文档,数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录,如MongoDB。 2.2.3 搜索引擎-常见的全文搜索引擎有Elasticsearch

postman中 form-data、x-www-form-urlencoded、raw、binary的区别

主宰稳场 提交于 2019-12-04 15:15:46
原文地址: http://blog.csdn.net/wangjun5159/article/details/47781443 1、form-data: 就是http请求中的 multipart/form-data ,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息; 由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件,在springmvc中可以使用MultipartHttpServletRequest接收通过api根据"name"获取不同的键值,也可以通过MulTipartFile数组接收多个文件。 。 2、x-www-form-urlencoded: 就是 application/x-www-from-urlencoded ,会将表单内的数据转换为键值对,&分隔。 当form的action为get时,浏览器用x-www-form-urlencoded的编码方式,将表单数据编码为 (name1=value1&name2=value2…),然后把这个字符串append到url后面,用?分隔,跳转 到这个新的url。

postman中 form-data、x-www-form-urlencoded、raw、binary操作

天涯浪子 提交于 2019-12-04 15:06:01
RD一般在测试接口时优先会选择谷歌得postman工具 postman的Body里有:form-data、x-www-form-urlencoded、raw、binary类型 具体时说明意思呢? 一: form-data 就是http请求中的 multipart/form-data ,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息; 由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。 二: x-www-form-urlencoded application/x-www-from-urlencoded ,会将表单内的数据转换为键值对,如: name=leyangjun&age =28&work=meituan 三: raw 可上传任意格式的文本,可以上传text、json、xml、html等各种文本类型 四: binary 等同于 Content-Type:application/octet-stream ,只可上传二进制数据,通常用来上传文件,由于没有键值,所以一次只能上传一个文件。 注意: form

postman中 form-data、x-www-form-urlencoded、raw、binary的区别

风格不统一 提交于 2019-12-04 15:02:45
1、form-data: 就是http请求中的 multipart/form-data ,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息; 由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。 2、x-www-form-urlencoded: 就是 application/x-www-from-urlencoded ,会将表单内的数据转换为键值对,比如,name=java&age = 23 3、raw 可以上传任意格式的文本,可以上传text、json、xml、html等 4、binary 相当于 Content-Type:application/octet-stream ,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。 multipart/form-data与x-www-form-urlencoded区别 multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息; x-www-form

[转帖]B树索引和位图索引的结构介绍

丶灬走出姿态 提交于 2019-12-04 10:10:46
B树索引和位图索引的结构介绍 http://blog.itpub.net/12679300/viewspace-1174236/ 一 前言:? ROWID :包含键值的行的行ID,( 查找块的最快方法,类似于门牌号 )? 因为所有行属于同一个段,所以要使用受限的ROWID 指向表行 索引是数据库为了提高查询效率提供的一种冗余结构,保守计算数据库50%以上的调优可以通过调整索引来进行优化; 引用国内一位资深的ORACLE专家的话:"我其实只懂点(挨踢)知识,IT里面其实只懂点甲骨文,甲骨文里面其实只懂点数据库,数据库里面其实只懂点SQL,SQL里面其实只懂点索引"——"你才是真正的专家!" 根据个人的浅薄的经验,作为DBA的日常运维会越来越少,从数据库的每个版本的更新来看,数据库系统已经趋向越来越智能话,DBA能干的活也越来越少了,如果一个DBA只能做做日常的表空间扩容、数据库的备份恢复、启停、系统的更新,那么将是很危险的一件事。而调优自古以来就是一门很高深的学问,如果能把这个做好了,那么DBA能够创造的价值和在公司的作用中,将越来越显著; 说了这么多,应该引入主题了,如果要做好调优,先从索引入手吧。 后续的章节中将陆续更新索引的一些知识,第一章从索引的类别开始吧; 二 索引在结构上的类别可划分如下:B树索引、位图索引、散列索引、反转索引等 三 索引的介绍: 1、B树索引(BTREE