Redis

Redis

基于内存的键值型NoSQL数据库,单线程(因此每个命令具有原子性)

  • NoSql(Not Only Sql),不仅仅是SQL,泛指非关系型数据库。

Redis应用场景:缓存、消息队列、任务队列、分布式锁

通用命令

命令说明
KEYS pattern查找所有符合给定模式(pattern)的key
EXISTS key检查给定key是否存在
TYPE key返回key所储存的值的类型
TTL key返回给定key的剩余生存时间(TTL, time to live),以秒为单位
DEL key该命令用于在key存在是删除key

数据类型

Redis数据类型

String

又细分为普通字符串、整数和浮点数。
字符串类型的最大空间不超过512MB。

常用命令:

命令说明
SET key value设置指定key的值为value
GET key获取指定key的值
MSET key value [key value ...]同时设置一个或多个key-value对
MGET key [key ...]获取所有给定key的值
INCR key将key中储存的数字值增一
DECR key将key中储存的数字值减一
INCRBY key increment将key中储存的数字值增加指定的增量increment
DECRBY key decrement将key中储存的数字值减少指定的减量decrement
SETNX key value只有在key不存在时,设置key的值为value
SETEX key seconds value将key的值设为value,并将key的生存时间设为seconds秒
APPEND key value如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾
STRLEN key返回key所储存的字符串值的长度

KEY结构: Redis没有类似MySQL中Table的概念,使用多个单词形成层级结构以区分不同类型的数据。

prj:user:1 {“id”:1, “name”: “Jack”, “age”: 21} prj:dish:1 {“id”:1, “name”: “鲟鱼火锅”, “price”: 4999}

Hash

Hash类型是一个键值对集合,适合用于存储对象。 其value本身是一个键值对集合。

常用命令:

命令说明
HSET key field value为key中的hash类型添加一个field-value对
HGET key field获取key中的hash类型指定field的值
HMSET key field value [field value ...]同时为key中的hash类型设置多个field-value对
HMGET key field [field ...]获取key中的hash类型指定的多个field的值
HGETALL key获取key中的hash类型的所有field-value对
HDEL key field [field ...]删除key中的hash类型指定的一个或多个field
HLEN key获取key中的hash类型的field数量
HKEYS key获取key中的hash类型的所有field

List

List类型是一个简单的字符串列表,特征与linked list相似,按照插入顺序排序、插入和删除快、查询速度一般、元素可以重复。
常用来存储有序数据,例如:朋友圈点赞列表,评论列表等。

常用命令:

命令说明
LPUSH key value [value ...]将一个或多个值value插入到对应的表头
RPUSH key value [value ...]将一个或多个值value插入到对应的表尾
LPOP key移除并返回对应的表头元素
RPOP key移除并返回对应的表尾元素
BLPOP key [key ...] timeout同LPOP,若list为空则等待timeout
LRANGE key start end返回对应的list中指定闭合区间内的元素

Set

Set类型是string类型的无序集合,集合内的元素无序、查找快、不允许重复。

常用命令:

命令说明
SADD key member [member ...]向set添加一个或多个元素member
SREM key member [member ...]移除set中的一个或多个元素member
SMEMBERS key返回set中的所有成员
SCARD key返回set中的元素个数
SISMEMBER key member判断元素member是否是set的成员
SINTER key [key ...]返回多个set的交集
SUNION key [key ...]返回多个set的并集
SDIFF key [key ...]返回多个set的差集

Sorted Set

Sorted Set类型是string类型的有序集合,集合内的元素按分数(score)排序、查找快、不允许重复。

常用命令:

命令说明
ZADD key score member [score member ...]向有序集合添加一个或多个元素member及其分数score
ZREM key member [member ...]移除有序集合中的一个或多个元素member
ZCARD key返回有序集合中的元素个数
ZSCORE key member返回有序集合中元素member的分数score
ZRANK key member返回有序集合中元素member的排名(按分数从低到高排序)
ZRANGE key min max [WITHSCORES]返回有序集合中指定闭合区间内的元素
ZCOUNT key min max返回有序集合中指定分数区间内的元素个数
ZREVRANGE key start end [WITHSCORES]返回有序集合中指定闭合区间内的元素,按分数从高到低排序
ZINTER ZUNION ZDIFF有序集合的交集、并集、差集操作

Java客户端

  • Jedis:功能完善、使用广泛的Java Redis客户端。

  • Lettuce:基于Netty的高性能Java Redis客户端,支持异步和响应式编程模型。

  • Redisson:功能丰富的Java Redis客户端,提供分布式锁、分布式集合等高级功能。

  • SpringDataRedis:Spring框架的Redis模块,集成了Jedis和Lettuce客户端。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus