1 / 11
文档名称:

Redis之数据类型.docx

格式:docx   大小:77KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Redis之数据类型.docx

上传人:taotao0a 2019/9/25 文件大小:77 KB

下载得到文件列表

Redis之数据类型.docx

相关文档

文档介绍

文档介绍:Redis之数据类型————————————————————————————————作者:————————————————————————————————日期: Redis之数据类型redis支持的各种数据类型包括string,list,set,-valuedb,所以我们首先来看看他的key。首先key也是字符串类型,但是key中不能包括边界字符。由于key不是binarysafe的字符串,所以像"mykey"和"mykey\n"这样包含空格和换行的key是不允许的。顺便说一下在redis内部并不限制使用binary字符,这是redis协议限制的。"\r\n"在协议格式中会作为特殊字符。(比如MSET)。总之目前还是把包含边界字符当成非法的key吧,免得被bug纠缠。另外关于key的一个格式约定介绍下,object-type:id:field。比如user:1000:password,blog:xxidxx:title,还有key的长度最好不要太长。道理很明显占内存啊,而且查找时候相对短key也更慢。不过也不推荐过短的key,比如u:1000:pwd,这样的。显然没上面的user:1000:password可读性好。下面介绍下key相关的命令exitskey测试指定key是否存在,返回1表示存在,0不存在delkey1key2....keyN删除给定key,返回删除key的数目,0表示给定key都不存在typekey返回给定key的value类型。返回none表示不存在key,string字符类型,list链表类型set无序集合类型...keyspattern返回匹配指定模式的所有keyrandomkey返回从当前数据库中随机选择的一个key,如果当前数据库是空的,返回空串renameoldkeynewkey原子的重命名一个key,如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同renamenxoldkeynewkey同上,但是如果newkey存在返回失败dbsize返回当前数据库的key数量expirekeyseconds为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在ttlkey返回设置过过期时间的key的剩余过期秒数-1表示key不存在或者没有设置过过期时间selectdb-index通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败movekeydb-index将key从当前数据库移动到指定数据库。返回1成功。0如果key不存在,或者已经在指定数据库中flushdb删除当前数据库中所有key,此方法不会失败。慎用flushall删除所有数据库中的所有key,此方法不会失败。更加慎用string类型string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。从内部实现来看其实string可以看作byte数组,最大上限是1G字节。下面是string类型的定义。structsdshdr{longlen;longfree;charbuf[];};buf是个char数组用于存贮实际的字符串内容。其实char和c#中的byte是等价的,都是一个字节len是buf数组的长度,free是数组中剩余可用字节数。由此可以理解为什么string类型是二进制安全的了。因为它本质上就是个byte数组。当然可以包含任何数据了。,下面详细介绍。还有redis的其他类型像list,set,sortedset,hash它们包含的元素与都只能是string类型。如果只用string类型,。如下:setkeyvalue设置key对应的值为string类型的value,返回1表示成功,0失败setnxkeyvalue同上,如果key已经存在,返回0。nx是notexist的意思getkey获取key对应的string值,如果key不存在返回nilgetsetkeyvalue原子的设置key的值,并返回key的旧值。如果key不存在返回nilmgetkey1key2...keyN一次获取多个key的值,如果对应key不存在,则对应返回nil。下面是个实验,首先清空当前数据库,然后设置k1,