简单说明

Redis是key-value的数据库,key一般为String,value多种多样:

  • String
  • Hash
  • List
  • Set
  • SortedSet
    以上为基本类型,以下为特殊类型
  • GEO
  • BitMap
  • HyperLog

Key的层级

Redis的key允许多个单词形成层级,单词之间以隔开,示例如下:

项目名:业务名:类型:id

操作命令

官网文档

1
help @group #查看对应的类型的命令

通用命令

1
2
3
4
5
keys <pattern> #查看符合的key,太多单线程会阻塞
del <key> [key...] #删除符合的key,返回成功删除的数量
exists <key> [key...] #判断是否存在
expire <key> <time> #给key设置有效期(秒)
ttl <key> #查看key的存活事件,-1表永久有效,-2表失效(即没有)

String命令

又根据字符串实际格式,分为三类:

  • string
  • int
  • float

    不超过512m

1
2
3
4
5
6
7
8
9
10
set <key> <value> [nx] [ex time] #添加值
get <key> #获取值
mset <key value>[key value...] #添加多个值
mget <key> [key...] #获得多个值,对应返回
incr <key> #整数自增
incrby <key> <increment> #让整数增长increment
decr <key> #整数自减
incrbyfloat <key> <increment> #浮点增长
setnx <key> <value> #如果key不存在就新增
setex <key> <value> <time> #新增并设置有效期

Hash命令

与String的区别:String是将对象序列化成JSON存储,无法修改某个字段。而Hash则是将每个字段单独存储,可以单独CRUD

1
2
3
4
5
6
7
8
9
hset <key> <filed> <value> [nx] #对某个对象的字段添加
hget <key> <field> #获取值
hmset <key> <filed> <value>[field value...] #一个key添加多个字段
hmget <key> <filed> [field...] #获得多个值,对应返回
hgetall <key> #获取key的所有字段
hkeys #获取所有key值
hvals #获取所有值
hincrby <key> <field> <increment> #让整数增长increment
hsetnx <key> <field> <value> #如果field不存在就新增

List命令

  • 有序
  • 可重复
  • 操作快
  • 查询一般
1
2
3
4
5
6
7
8
9
lpush <key> <value> [value ...]
lpop <key> [count]
rpush <key> <value> [value ...]
rpop <key> [count]
# 上面可以相当于双端队列

lrange <key> start end #获取key的列表的下标范围值(零开始)
blpop <key> <timeout> #block 如果没有会等待时间
brpop <key> <timeout> #block 如果没有会等待时间

Set命令

  • 无序
  • 不可重复
  • 查找快
  • 支持并交差集等
1
2
3
4
5
6
7
8
sadd <key> <value> #添加元素
srem <key> <value> #删除元素
scard <key> #返回集合大小
sismember <key> <value> #集合是否存在对应元素
smembers <key> #集合中的元素
sinter <key1> <key2> #两个集合的交集
sdiff <key1> <key2> #差集
sunion <key1> <key2> #并集

SortedSet命令

底层实现是一个跳表加Hash
常应用在排行榜

  • 可排序
  • 不重复
  • 查询快
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    zadd <key> <score> <value> #添加一个元素或多个元素到集合中,若存在更新score
    zrem <key> <value> #移除元素
    zscore <key> <value> #获取score值
    zrank <key> <value> #获取排名
    zcard <key> #获取个数
    zcount <key> <min> <max> #统计[min,max]范围的个数

    zincrby <key> <increment> <value> #指定元素自增
    zrange <key> <min> <max> #按照score排名,获取排名在[min,max]的元素
    zrangebyscore <key> <min> <max> #按照score,获取分数在[min,max]的元素

    #在中间加入rev,即反转,如zrevrange <key> <min> <max> #反向排序

    zinter <key1> <key2> #两个集合的交集
    zdiff <key1> <key2> #差集
    zunion <key1> <key2> #并集