String

  1. set key1 v1
  2. get key1
  3. keys *
  4. exists key1
  5. append key1 "hello"
  6. get key1
  7. strlen key1
  8. append name "zhangshan" #如果不存在key,相当于set

网站浏览量

  1. set views 0
  2. get views
  3. "0"
  4. incr views
  5. "1"
  6. decr views
  7. "0"

步长(INCRBY可以设置步长)

  1. incrby views 10
  2. decrby views 10

截取(GETRANGE)

  1. getrange key1 0 3 #[0 ~ 3]
  2. getrange key1 0 -1 #全部字符串

替换

  1. setrange key2 1 xx
  2. get key2

设置过期时间

  1. setex key3 30 "hello"

不存在在设置(在分布式锁中常用)

  1. setnx mykey "redis"
  2. setnx mykey "mongodb"
  3. get mykey
  4. "redis"

批量设置和获取

  1. mset k1 v1 k2 v2 k3 v3
  2. keys *
  3. mget k1 k2 k3
  4. msetnx k1 v1 k4 v4 #批量设置不存在

这里是一个巧妙的key

  1. set user:1:name zhangshan

先get后set(更新)

  1. getset db redis
  2. get db
  3. "redis"
  4. getset db "mongodb"
  5. get db
  6. "mongodb"

五大数据类型和三大特殊数据类型

List

在redis中可以把List完成栈、队列、阻塞队列

  1. lpush list one # 值插入到列表的头部
  2. lpush list two
  3. lpush list three
  4. lrange list 0 -1
  5. lrange list 0 1

Set

集合中的值不能重复

  1. sadd myset "hello"
  2. smembers myset
  3. sismember myset hello
  4. srem myset hello
  5. scard myset
  6. 3元素的个数
  7. srandmember myset #随机抽出一个元素

Hash

想象成一个map集合,本质和String没有太大的区别,还是一个简单的key-value!
key-key-value

  1. set myhash field value # 首先知道hash的结构 多了一层
  2. hmset myhash f1 v1 f2 v2
  3. hmget myhash f1 f2
  4. hgetall myhash # 获取全部数据
  5. hdel myhash field1 # 删除hash指定key

Zset(有序集合)
在set的基础上增加了一个值(序号)

  1. zadd myset 1 one # 1是序号