redis的特性:
1)内存存储与持久化
2)5种数据类型
字符串:
hash:
链表:
集合:
有序集合:
3)Redis的多数据库
1)Redis默认有16个数据库,数据库名分别为:db0、db1 ... db15,redis不支持自定义数据库名称
2)能够经过修改配置文件中的databases参数来修改默认数据库的个数
3)客户端链接到Redis服务后会自动选择0号数据库。注:能够根据提示符看出目前客户端是在操做哪一个数据库。eg:127.0.0.1:6379>表示0数据库,127.0.0.1:6379[1]>表示1数据库。
4)经过SELECT命令能够更换数据库:eg:SELECT 1
注意:
1)Redis不支持自定义数据库名称,不支持为每一个数据库设置访问密码
2)Redis的多个数据库之间不是彻底隔离的。
eg:FLUSHALL命令会清空全部数据库的数据。
redis
通用命令:
type key # 获取key的类型数据库
String类型经常使用命令:app
set:
set key value # 插入key-value对
setnx key value # 若key不存在则插入键值对;若key已经存在,则不插入键值对,返回0。nx:not exist
setex key 有效期 value # 插入键值对并设置有效期(单位为秒)
mset key1 value1 key2 value2 # 批量插入键值对,结果只有两种:所有成功并返回ok或所有失败并返回0
msetnx key1 value1 key2 value2 # 批量插入键值对,结果只有两种:所有成功并返回ok或所有失败并返回0,若是key1或key2已经存在,则插入所有失败。
expire key n # 设置key对应的键值对的过时时间为n秒
rename key1 key2 # 将key1重命名为key2
del key # 删除key对应的键值对
persist key # 删除key的过时时间,使key对应的键值对永久存储。
get:
get key # 获取key对应的value
getset key value # 设置key对应的新值,并返回key对应的旧值
mget key1 key2 # 批量获取多个key对应的值
key pattern # 获取匹配pattern的全部key对应的值
strlen key # 获取key对应的value的长度
exists key # 验证key对应的键值对是否存在:1表示存在,0表示不存在
ttl key # 获取key对应的键值对剩余的生存时间(单位为秒),ttl返回值:正数表示剩余生存时间,-1表示没有过时时间,永久存储,-2表示数据已经被删除。对象
其它:
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 -n
append key appendStr # 把appendStr追加到key对应的value的后面
setrange key 下标 替换的字符串
# 替换指定key对应的value从指定下标至最后的值
getrange key startIndex endIndex
# 获取指定key对应的value的子串(包含startIndex和endIndex)
# 字符串左面下标是从0开始的, eg:获取前3个字符 getrange key 0 2
# 字符串右边下标是从-1开始的, eg:获取最后3个字符 getrange key -3 -1
list(链表)类型经常使用命令:队列
概念:list(链表)类型:每一个子元素都是String类型的双向链表
push:
lpush key value # 在名称为key的链表 头部(l表示left)添加字符串元素value
rpush key value # 在名称为key的链表 尾部(r表示right)添加字符串元素value
pop:
lpop key # 在名称为key的链表 头部(l表示left)删除一个元素,并返回删除元素。若是链表key不存在或者为空,则当即返回null。
rpop key # 在名称为key的链表 尾部(r表示right)删除一个元素,并返回删除元素,若是链表key不存在或者为空,则当即返回null。
blpop key
brpop key
# 阻塞式(b表示block)的获取链表中的元素
# 优势:避免使用轮询的方式来判断队列(链表)中是否有任务存在。
rpoplpush key1 key2
# 从名称为key1的链表的尾部移除一个元素,而且将这个元素添加到名称为key2的链表的头部,并返回这个元素,整个操做是一个原子操做。
# 若是链表key1不存在,或者链表key1是一个空链表,则返回空。
其它:
llen key # 返回名称为key的链表的长度内存
lset key index value # 在名称为key的链表中,将(从左边开始)第index元素的值设为value,下标从0开始element
lindex key index # 返回名称为key的链表的第index个元素rem
lrange key index1 index2 # 获取名称为key的链表中指定范围的元素
linsert key before elementValue value # 在名称为key的链表的elementValue元素以前添加字符串元素value字符串
lrem key count value # 在名称为key的链表中,删除count个和value相同的元素,count>0时,按从头至尾的顺序删除,count=0时,删除所有。
ltrim key index1 index2 # 在名称为key的链表中,保留index1到index2范围内的数据
get
hash类型及操做
概念:redis中的hash是一个string类型的field和value的映射表。它的添加、删除操做都是O(1),hash特别适合于存储对象。
hset mapName key value # 往名称为mapName的map中添加key-value对,map若是不存在,则自动建立map。若是key-value对已存在,则更新。 hget mapName key # 获取map中指定key的value hdel mapName key # 删除map中指定的key-value hlen mapName # 获取map的大小 hgetall key # 获取map中全部的key-value对 set(集合)类型及操做: 概念: sadd key value # 向名称为key的集合中添加字符串元素value srem key value # 将名称为key的集合中的value元素删除 smembers key # 获取set中全部的元素