> 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除了是我们的字符串还可以是我们的数字!