根据前面介绍,Redis是一个基于key-value的非关系型数据库。Redis中的key是一个字符串,value支持多种数据类型。常见的有如下5中数据类型:String、List、Set、Hash、Zset。
在详细介绍Redis的五种value数据类型之前,首先简单介绍一下Redis常用的关于key的命令:
keys * 查看当前库所有key (匹配:keys *1)
exists key 判断某个key是否存在
type key 查看key是什么类型
del key 删除指定的key及其对应的value数据
unlink key 非阻塞删除,仅将key从keyspace元数据中删除,真正的删除会在后续异步操作。
expire key 10 为给定的key设置过期时间:10秒钟
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
select <dbid> 切换数据库
dbsize 查看当前数据库的key的数量
flushdb 清空当前库
flushall 清空所有库,共有16个库。默认使用0号库
1、String
1.1、简介
String是Redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value,一个Redis中字符串value最多可以是512M。String类型是二进制安全的。意味着Redis的String可以包含任何数据。比如jpg图片或者序列化的对象。
1.2、常用命令
set <key> <value> 添加键值对
get <key> 查询对应键值
append <key> <value> 将给定的value追加到原值的末尾
strlen <key> 查看value值的长度
setnx <key> <value> 只有在key不存在时,设置key的值
incr <key> 将key对应的value值增1,只能对数字值操作,如果为空,新增值为1
decr <key> 将key对应的value值减1,只能对数字值操作,如果为空,新增值为-1
incrby <key> <步长> 将key对应的value值增加<步长>,只能对数字值操作
decrby <key> <步长> 将key对应的value值减少<步长>,只能对数字值操作
incr/decr、incrby/decrby是原子操作(redis是单线程的)
mset <key1> <value1> <key2> <value2> 同时设置多个键值对
mget <key1> <key2> <key3> 同时查看多个value
msetnx <key1> <value1> <key2> <value2> 同时设置多个键值对,当且仅当所有key都不存在时成功。
以上msetnx对同时对多个key操作时,具备原子性,即有一个失败则都失败
getrange <key> <起始位置> <结束位置> 获得值的范围,类似java中的substring,前包,后包
setrange <key> <起始位置> <value>
用value覆写<key>所储存的字符串值