一、string
1、基本操作
set、get、del、mset(同时设置多个key-value)、mget(同时获取多个value)、strlen(value的长度)、append(追加,若没有则新建)
2、扩展操作
incr、incrby、incrbyfloat
decr、decrby
setex、psetex
3、注意事项
(1)数据操作成功与不成功的反馈:0-失败,1-成功
(2)数据未获取到:nil
(3)数据最大存储容量:512M
(4)数据计算的最大范围:Java中long型最大值
二、hash
用于存储对象类型的数据
1、基本操作
hset、hget、hgetall(获取key对应的所有的字段)、hdel、hmset(同时设置多个键值对)、hmget(同时获取多个键值对)、hlen、hexists(判断key对应的field是否存在)
2、扩展操作
hkeys(获取key对应的所有filed)、hvals(获取key对应的所有value)、hincrby、hdecrby、hsetnx
3、注意事项
(1)hash下的value只能存储字符串
(2)每个hash可以存储2^32-1个键值对
(3)hash设计初衷不是为了存储大量的对象,不可以将hash作为对象列表使用
(4)hgetall可以获取全部属性,若内部field过多,遍历效率很低
三、list
存储多个数据,并对数据存储空间的顺序进行区分。
1、基本操作
lpush、rpush、lrange(获取指定索引范围内的数据)、lindex(获取指定索引的数据)、llen(获取key对应的list长度)、lpop、rpop
2、扩展操作
blpop、brpop——规定时间内等待,有数据就获取并移除数据
lrem
3、注意事项
(1)list中保存的数据都是string,最多2^32-1个
(2)list具有索引,但操作数据时常以队列、栈的形式
(3)获取全部数据,结束索引为-1
(4)list可对数据进行分页,通常第一页来源于list,后面的通过数据库
四、set
list虽然可以存储大量数据,但查询速度慢,内部是链表数据结构。
1、基本操作
sadd、smembers、srem、scard(获取key对应的数据总量)、sismember(判断集合中是否包含指定数据)
2、扩展操作
srandmember key count——随机获取集合中指定数量的数据
spop——随机获取集合中某个数据并移除
sinter(交集)、sunion(并集)、sdiff(差集)、sinterstore、sunionstore、sdiffstore
smove(将指定数据进行移动)
3、注意事项
(1)set不允许重复,若添加的数据已存在,则保留第一份
(2)set虽然与hash存储结构相同,但无法使用hash的value存储空间
五、sorted_set
将数据根据自身特征进行排序,使数据有序展示。
1、基本操作
zadd、zrange(获取指定范围数据)、zrem、zrangebyscore(按照条件获取数据)
zremrangebyrank(条件删除数据-根据排名)、zremrangebyscore(条件删除数据-根据score)
zcard(获取key的数据总量)、zcount(获取key指定范围的数据量)
zinterstore、zunionstore
2、扩展操作
zrank、zrevrank——获取数据对应的索引
zscore——获取对应的score值
zincrby
3、注意事项
(1)score保存的数据存储空间是64位
(2)score保存也可以是一个双精度的double值
(3)底层还是基于set结构,因此数据不能重复,若重复score值将会被覆盖
六、通用操作
1、key
del、exists、type
expire、pexpire、expireat、pexpireat
ttl、pttl——获取key的有效时间
persist——将key从时效性转为永久性
keys pattern——查询模式
rename、renamenx(为key改名,若存在则覆盖/失败)
sort(为key排序)
help @generic
2、数据库
Redis位每个服务提供16个数据库,0-15;
每个数据库之间的数据相互独立。
select——切换数据库
quit
ping——测试Redis服务器是否连通
echo message——向Redis客户端输出日志
move key db——移动,必须保证当前db有这个key,且移动到的db没有这个key,否则移动失败
flushdb、flushall(慎用!)
dbsize——查看数据库里有多少key