一、Redis
REmote DIctionary Server(远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的key-value
分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被称为数据结构服务器。
Redis有以下三个特点:
- 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- 不仅支持简单的
key-value
类型的数据,还提供list
、set
、zset
、hash
等数据结构的存储。 - 支持数据的备份,即
master-slave
模式的数据备份。
二、Redis数据类型
String字符串
-
string
类型是Redis最基本的数据类型,一个key
对应一个value
(最大512M)。 -
string
类型是二进制安全的,也就是说Redis的string
可以包含任何数据,比如JPG图片或者序列化的对象。
Hash哈希
-
hash
是一个键值对集合。 -
hash
是一个string
类型的key
和value
的映射表,特别适合用于存储对象。 -
hash
类型与java中Map<String,Object>
。
List列表
-
list
是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表大头部或者尾部。 -
list
底层实现是链表。
Set集合
-
set
是string
类型的无序集合。 - 底层通过
HashTable
实现。
Zset有序集合
-
zset
和set
一样也是string
类型元素的集合,且不允许有重复的成员。 -
zset
每个元素都会关联一个double
类型的分数。通过分数来为集合中的成员进行从小到大的排序。 -
zset
的成员是唯一的,但是分数score
却可以重复。
三、Key
常用操作命令
keys *
:列出所有的key
exist key
:判断key
是否存在
move
:移动key-value
到其它库
expire key
:设置过期时间
ttl key
:查看key的过期时间
type key
:查看key的类型
四、String
常用操作命令
del
:删除key
append
:追加value
值字符串
strlen
:获取value
的字符串的长度
incr
:value
值加一操作
decr
:value
值减一操作
incrby
:value
值加上一个数
decrby
:value
值减去一个数
getrange
:获取指定范围内的值
setrange
:再指定的范围内设置值
setex
:设置带有过期时间的key-value
setnx
:只有key
不存在才设置key-value
,可以防止覆盖。
mset
:同时设置多个key-value
mget
:同时获取多个key-value
msetnx
:只有key
都不存在时,才可以设置成功,部分存在则不能设置成功
五、List
常用操作命令
lpush
:从头部(左侧)按顺序存放列表元素
lrange
:按指定的范围获取列表元素
rpush
:从尾部(右侧)按照顺序存放列表元素
lpop
:左端弹出一个元素
rpop
:右端弹出一个元素
lindex
:按照索引获取指定的元素
llen
:获取列表的长度
lrem
:删除指定数量的元素
ltrim
:截取指定索引范围的value
值,重新赋值
rpoplpush source destination
:从source
右侧取出一个元素放到destination
中左端
lset
:给指定索引index
的位置设置value
值
linsert key before/after value1 value2
:在指定的value
之前/之后插入指定的值
对于List
列表:
- 它是一个字符串链表,
left
和right
都可以插入添加。 - 如果键不存在,则创建新的链表。
- 如果键已存在,则新增内容。
- 如果值全部移除,对应的键也就消失了。
- 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很低。
六、Set
常用操作命令
sadd
:集合存放中存放元素
smembers
:获取集合所有元素
sismember
:判断集合中是否存在某个元素
scard
:获取集合中元素的个数
srem
:删除集合中元素
srandmember
:在集合中随机抽取指定个数的元素
spop:随机获取元素
smove
:将key1
中的某个元素移动到key2
中
sdiff
:求差集。以第一个key
为参照
sinter
:求交集
sunion
:求并集
六、Hash
常用操作命令
hset
:存放hash
元素
hget
:获取hash
元素
hmset
:同时设置多个key-value
hmget
:同时获取多个key-value
hgetall
:获取全部key-value
hdel
:删除指定元素
hlen
:获取元素个数
hexists
:判断某个key
值是否存在
hkeys
:获取所有key
hvals
:获取所有value
hincrby
:增加某个key
的value
值
hincrbyfloat
:增加某个key
的value
值,增加小数
hsetnx
:不存在key
才允许存放
七、Zset
常用操作命令
zadd
:存放zset
元素
zrange
:获取里面的所有元素
zrange withscores
:同时获取带scores
的value
值
zrangebyscores
:获取指定scores
范围的值
zrangebyscores withscores
:获取指定scores
范围的值,带scores
zrangebyscores (
:获取指定scores
范围的值,(
开区间,不包含
zrangebyscores limit
:获取指定scores
范围的值,limit
限制条件
zrem
:移除某个元素
zcard
:获取元素个数
zcount
:获取指定score
区间的元素的个数
zrank
:获取指定元素的下标
zscore
:获取指定元素的score
zrevrank
:逆序获取下标值
zrevrange
:逆序获取元素
zrevrangebyscore
:逆序获取指定score
范围的元素