redis field 是什么意思 跟key是什么关系,比如lpush(key,field,value)应该怎么设置

有没有人在啊,想请教一下,redis field 是什么意思 跟key是什么关系,比如lpush(key,field,value)应该怎么设置
最新回答
撕答案比分手还悲痛

2024-07-28 00:59:55

先说redisredis是一个类似memcached的key/value存储系统,它支持存储的value类型相对较多,包括string(
字符串
)、list(
链表
)、set(集合)和zset(有序集合)。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(这点儿个人觉得redis比memcache在数据保存上要安全一些),并且在此基础上实现了master-slave(主从)同步。redis的存取性能很高,SET操作每秒钟110000次,GET操作每秒钟81000次(速度很爽!)。Redis针对不同的存储类型对象提供了不同的命令。redis目前提供四种
数据类型
:string,list,set及zset(sortedset)。string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。set是集合,和我们数学中的
集合概念
相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。下面提供redis命令:适合全体类型的命令EXISTSkey判断一个键是否存在;存在返回1;否则返回0;DELkey删除某个key,或是一系列key;DELkey1key2key3key4TYPEkey返回某个key元素的数据类型(none:不存在,string:字符,list,set,zset,hash)KEYSpattern返回匹配的key列表(KEYSfoo*:查找foo开头的keys)RANDOMKEY随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串RENAMEoldnamenewname更改key的名字,新键如果存在将被覆盖RENAMENXoldnamenewname更改key的名字,如果名字存在则更改失败DBSIZE返回当前数据库的key的总数EXPIRE设置某个key的过期时间(秒),(EXPIREbruce1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。TTL查找某个key还有多长时间过期,返回时间秒SELECTindex选择数据库MOVEkeydbindex将指定键从当前数据库移到目标数据库dbindex。成功返回1;否则返回0(源数据库不存在key或目标数据库已存在同名key);FLUSHDB清空当前数据库中的所有键FLUSHALL清空所有数据库中的所有键处理字符串的命令SETkeyvalue给一个键设置字符串值。SETkeynamedatalengthdata(SETbruce10paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1G。GETkey获取某个key的value值。如key不存在,则返回字符串“nil”;如key的值不为字符串类型,则返回一个错误。GETSETkeyvalue可以理解成获得的key的值然后SET这个值,更加方便的操作(SETbruce10paitoubing,这个时候需要修改bruce变成1234567890并获取这个以前的数据paitoubing,GETSETbruce101234567890)MGETkey1key2…keyN一次性返回多个键的值SETNXkeyvalueSETNX与SET的区别是SET可以创建与更新key的value,而SETNX是如果key不存在,则创建key与value数据MSETkey1value1key2value2…keyNvalueN在一次原子操作下一次性设置多个键和值MSETNXkey1value1key2value2…keyNvalueN在一次原子操作下一次性设置多个键和值(目标键不存在情况下,如果有一个以上的key已存在,则失败)INCRkey自增键值INCRBYkeyinteger令键值自增指定数值DECRkey自减键值DECRBYkeyinteger令键值自减指定数值处理lists的命令RPUSHkeyvalue从List尾部添加一个元素(如序列不存在,则先创建,如已存在同名Key而非序列,则返回错误)LPUSHkeyvalue从List头部添加一个元素LLENkey返回一个List的长度LRANGEkeystartend从自定的范围内返回序列的元素(LRANGEtestlist02;返回序列testlist前012元素)LTRIMkeystartend修剪某个范围之外的数据(LTRIMtestlist02;保留012元素,其余的删除)LINDEXkeyindex返回某个位置的序列值(LINDEXtestlist0;返回序列testlist位置为0的元素)LSETkeyindexvalue更新某个位置元素的值LREMkeycountvalue从List的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。LPOPkey弹出List的第一个元素RPOPkey弹出List的最后一个元素RPOPLPUSHsrckeydstkey弹出_srckey_中最后一个元素并将其压入_dstkey_头部,key不存在或序列为空则返回“nil”处理集合(sets)的命令(有索引无序序列)SADDkeymember增加元素到SETS序列,如果元素(membe)不存在则添加成功1,否则失败0;(SADDtestlist3/none)SREMkeymember删除SETS序列的某个元素,如果元素不存在则失败0,否则成功1(SREMtestlist3/None)SPOPkey从集合中随机弹出一个成员SMOVEsrckeydstkeymember把一个SETS序列的某个元素移动到另外一个SETS序列(SMOVEtestlisttest3/ntwo;从序列testlist移动元素two到test中,testlist中将不存在two元素)SCARDkey统计某个SETS的序列的元素数量SISMEMBERkeymember获知指定成员是否存在于集合中SINTERkey1key2…keyN返回key1,key2,…,keyN中的交集SINTERSTOREdstkeykey1key2…keyN将key1,key2,…,keyN中的交集存入dstkeySUNIONkey1key2…keyN返回key1,key2,…,keyN的并集SUNIONSTOREdstkeykey1key2…keyN将key1,key2,…,keyN的并集存入dstkeySDIFFkey1key2…keyN依据key2,…,keyN求key1的差集。官方例子:key1=x,a,b,ckey2=ckey3=a,dSDIFFkey1,key2,key3=>x,bSDIFFSTOREdstkeykey1key2…keyN依据key2,…,keyN求key1的差集并存入dstkeySMEMBERSkey返回某个序列的所有元素SRANDMEMBERkey随机返回某个序列的元素处理有序集合(sortedsets)的命令(zsets)ZADDkeyscoremember添加指定成员到有序集合中,如果目标存在则更新score(分值,排序用)ZREMkeymember从有序集合删除指定成员ZINCRBYkeyincrementmember如果成员存在则将其增加_increment_,否则将设置一个score为_increment_的成员ZRANGEkeystartend返回升序排序后的指定范围的成员ZREVRANGEkeystartend返回降序排序后的指定范围的成员ZRANGEBYSCOREkeyminmax返回所有符合score>=min和score=min和score形式的数据,通过key进行任何操作。ttserver可以将数据持久化保存,memcached全部是保存在内存中,memcached会自动删除过期数据,最长不超过30天。memcached在和一些api配合时,能自动进行数据的出入序列化,读取反序列化。ttserver有主从复制的功能,操作日志等,这完全是数据库才有的东西。据说memcached正在对整体架构做调整,到时候支持plugin机制.会把网络,事件处理,内存存储剥离开来.以后要做基于磁盘的key-value存储就可以写一个存储引擎就成了。memcached的二次开发又步入一个小高潮。