Redis是一个Key-Value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
一、 Redis操作String(字符串)
Redis保存String称之为“单值单Value”,也就是说一个key只能保存一个值,常用的操作命令如下:
命令 | 描述 |
---|---|
set/get/del/append/strlen | 对String的基本操作 |
Incr/decr/incrby/decrby | 每次递增1/每次递减1/按某个数每次递增/按某个数每次递减 |
getrange/setrange | 对字符串操作(java中SubString) |
setex键秒值/setnx | set with expire和set if not exist |
mset/mget/msetnx | 批量操作 |
getset | 先get再set |
二、 Redis操作list(集合)
Redis保存List称之为“单值多value”。
常用操作命令:
命令 | 描述 |
---|---|
lpush/rpush/lrange | 保存list和获取list |
lpop/rpop | 从list中弹出一个值 |
lindex | 按照索引下标获得元素(从上到下) |
llen | List长度 |
lrem key | 删N个value |
ltrim key | 开始index 结束index,截取指定范围的值后再赋值给key |
rpoplpush 源列表 目的列表 | 从一个list弹出再赋值给另一个list |
lset key index value | List指定位置设置值 |
linsert key before/after 值1 值2 | 在list的指定位置插入值 |
三、 Redis操作set
Redis保存set也是 “单值多value”,但是set的值不可重复。
命令 | 描述 |
---|---|
sadd/smembers/sismember | 保存set和获取set |
scard | 获取集合里面的元素个数 |
srem key value | 删除集合中元素 |
srandmember key | 某个整数(随机出几个数)红包,抽奖多用 |
spop key | 随机出栈 |
smove key1 key2 | 作用是将key1里的某个值赋给key2 |
数学集合类 | 差集:sdiff/交集:sinter/并集:sunion |
四、 Redis操作Hash
Hash与Java中的Map对应,KV模式不变,但V是一个键值对。Hash是redis中的一个非常重要的数据类型。
常用操作命令:
命令 | 描述 |
---|---|
hset/hget/hmset/hmget/hgetall/hdel | 操作hash的基本命令 |
hlen | Hash中的元素数量 |
hexists key | 在key里面的某个值的key |
hkeys/hvals | 一个hash中所有的key和value |
hincrby/hincrbyfloat | 指定的值按某个值增长 |
hsetnx | 不存在就设置 |
五、 Redis有序集合Zset(sorted set)
在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2。
常用操作命令:
命令 | 描述 |
---|---|
zadd/zrange | 操作hash的基本命令 |
zrangebyscore key开始score | 结束score 根据得分查询(不包含 |
zrem key | 某score下对应的value值,作用是删除元素 |
zcard/zcount key score区间/zrank key values值, | 作用是获得下标值/zscore key 对应值,获得分数 |
zrevrank key values值, | 作用是逆序获得下标值 |
zrevrange | 逆序获取值 |
zrevrangebyscore key 结束score 开始score | 根据分数逆序排序 |