redis

来源:互联网 发布:淘宝背景图片素材 编辑:程序博客网 时间:2024/06/16 09:28
redis的特性:1)内存存储与持久化2)5种数据类型字符串:hash:链表:集合:有序集合:3)Redis的多数据库1)Redis默认有16个数据库,数据库名分别为:db0、db1 ... db15,redis不支持自定义数据库名称2)可以通过修改配置文件中的databases参数来修改默认数据库的个数3)客户端连接到Redis服务后会自动选择0号数据库4)通过SELECT命令可以更换数据库:eg:SELECT 1注意:1)Redis不支持自定义数据库名称,不支持为每个数据库设置访问密码2)Redis的多个数据库之间不是完全隔离的。eg:FLUSHALL命令会清空所有数据库的数据。常用命令:ping# 判断与服务端的链接是否正常dbsize# 获取当前数据库中key的数目info# 获取redis服务器信息quit# 退出redis连接exists key# 验证key对应的键值对是否存在:1表示存在,0表示不存在expire key n# 设置key对应的键值对的过期时间为n秒ttl key # 获取key对应的键值对剩余的生存时间# ttl返回值:大于0的数字:剩余生存时间,单位为秒-1 : 没有生存时间,永久存储-2 : 数据已经被删除persist key# 删除key的过期时间,使key对应的键值对永久存储。del key# 删除key对应的键值对rename key1 key2# 将key1重命名为key2type key# 获取key的类型key pattern# 获取匹配pattern的所有key对应的值flushdb# 清空当前所在数据库的数据flushall# 清空所有数据库的所有数据【String类型常用命令】set key value# 插入key-value对setnx key value# 若key不存在则插入键值对;若key已经存在,则不插入键值对,返回0# nx:not existsetex key 有效期 value# 插入键值对并设置有效期(单位为秒)setrange key 下标 替换的字符串# 替换指定key对应的value从指定下标至最后的值mset key1 value1 key2 value2# 批量插入键值对,结果只有两种:全部成功并返回ok或全部失败并返回0msetnx key1 value1 key2 value2# 批量插入键值对,结果只有两种:全部成功并返回ok或全部失败并返回0# 如果key1或key2已经存在,则插入全部失败。get key# 获取key对应的valuegetset key value# 设置key对应的新值,并返回key对应的旧值getrange key startIndex endIndex# 获取指定key对应的value的子串(包含startIndex和endIndex)# 字符串左面下标是从0开始的,eg:获取前3个字符 getrange key 0 2# 字符串右边下标是从-1开始的,eg:获取最后3个字符getrange key -3 -1mget key1 key2# 批量获取多个key对应的值incr key# 对key对应的value进行+1操作# 如果key不存在,则会将key对应的value设为1,并存储该键值对# 如果key对应的value的类型不是int类型,则会返回错误incrby key n# 对key对应的value进行+n操作# 如果key不存在,则会将key对应的value设为n,并储存该键值对decr key# 对key对应的value进行-1操作# 如果key不存在,则会讲key对应的value设为-1,并存储该键值对decrby key n# 等价于incrby key -nappend key appendStr# 把appendStr追加到key对应的value的后面strlen key# 获取key对应的value的长度    【list(链表)类型常用命令】1)list(链表)类型:每个子元素都是String类型的双向链表 lpush key value# 在名称为key的链表 头部(l表示left)添加字符串元素valuerpush key value# 在名称为key的链表 尾部(r表示right)添加字符串元素valuelpop key# 在名称为key的链表 头部(l表示left)删除一个元素,并返回删除元素。# 如果链表key不存在或者为空,则立即返回nullrpop key# 在名称为key的链表 尾部(r表示right)删除一个元素,并返回删除元素# 如果链表key不存在或者为空,则立即返回nullblpop keybrpop key# 阻塞式(b表示block)的获取链表中的元素# 优点:避免使用轮询的方式来判断队列(链表)中是否有任务存在。rpoplpush key1 key2# 从名称为key1的链表的尾部移除一个元素,并且将这个元素添加到名称为key2的链表的头部,并返回这个元素,整个操作是一个原子操作。# 如果链表key1不存在,或者链表key1是一个空链表,则返回空。llen key# 返回名称为key的链表的长度lrange key index1 index2# 获取名称为key的链表中指定范围的元素linsert key before elementValue value# 在名称为key的链表的elementValue元素之前添加字符串元素valuelindex key index# 返回名称为key的链表的第index个元素lset key index value# 在名称为key的链表中,将(从左边开始)第index元素的值设为value# 下标从0开始lrem key count value# 在名称为key的链表中,删除count个和value相同的元素。# count>0 时,按从头到尾的顺序删除# count=0 时,删除全部ltrim key index1 index2# 在名称为key的链表中,保留index1到index2范围内的数据【hash类型及操作】redis中的hash是一个string类型的field和value的映射表。它的添加、删除操作都是O(1)hash特别适合于存储对象。把一个对象存储在hash类型中比把对象的每个字段用string类型分开存储要节省内存空间。待续。。