> GETRANGE key 0 1
> set key2 abcdefg
> get key2
> SETRANGE key2 1 xx # 替换指定位置开始的字符串
> get key2
# setex (set with expire) # 设置过期时间
# setnx (set if not exist) # 不存在则设置(在分布式锁中会常常使用!)
> setex key3 30 "hello"
> ttl key3 # 查看距离过期的剩余时间
> setnx mykey "redis" # 如果mykey不存在,创建mykey
> setnx mykey "MongoDB" # 输出仍是redis
###############
> mset k1 v1 k2 v2 k3 v3 # 同时设置多个值
> keys *
> mget k1 k2 k3 # 同时获取多个值
> msetnx k1 v1 k4 v4 # msetnx是一个原子性的操作,要么一起成功,要么一起失败!这个例子里会输出0
> get k4 # (nil)
# 对象
> set user:1 {name:zhangsan,age:3} # 设置一个user:1对象 值为json字符来保存一个对象!
# 这里的key是一个巧妙的设计:user:{id}:{filed}
> mset user:1:name zhangsan user:1:age 2
> mget user:1:name user:1:age
###############
> getset db redis # 如果不存在值,则返回 nil
> get db # "redis"
> getset db mongodb # 如果存在值,获取原来的值,并设置新的值
> get db # "mongodb"
数据结构是相同的!
String类型的使用场景:value除了是我们的字符串还可以是我们的数字!
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储!