String(字符串)
redis命令用法:
SET key value //存入字符串键值对
MSET key value [key2 value2 ...] //批量存入字符串键值对
SETNX key value //存入一个不存在的键值对
GET key //获取一个字符串键值
MGET key [key2 ...] //批量获取键值
DEL key //删除一个键值
EXPIRE key seconds //设置一个键值的过期时间
原子操作:
INCR key // 将key中存储的数字的值加1
DECR key //将key中存储的值自减1
INCRBY key increment //将key存储的值加上increment
DECRBY key decrement //将key存储的值减去decrement
特别说明:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
从 Redis 2.6.12 版本开始, SET
命令的行为可以通过一系列参数来修改:
EX seconds
: 将键的过期时间设置为seconds
秒。 执行SET key value EX seconds
的效果等同于执行SETEX key seconds value
。PX milliseconds
: 将键的过期时间设置为milliseconds
毫秒。 执行SET key value PX milliseconds
的效果等同于执行PSETEX key milliseconds value
。NX
: 只在键不存在时, 才对键进行设置操作。 执行SET key value NX
的效果等同于执行SETNX key value
。XX
: 只在键已经存在时, 才对键进行设置操作。
Note
因为 SET
命令可以通过参数来实现 SETNX
、 SETEX
以及 PSETEX
命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX
、 SETEX
和 PSETEX
这三个命令。
String的应用场景:
单值缓存
set key value
get key
对象缓存:
1、set user:1 value(user:1的json格式的信息)
2、Mset user:1 value1 user:2 value2 ...(key.. value..)
分布式锁:
SETNX product:1001 true //返回1代表获取锁成功
SETNX product:1001 true //返回0代表获取锁成功,因为此时key已经存在
。。。执行业务操作
DEL product:1001 //业务执行完成,释放锁
set product:1001 true ex 10 nx //相当于给setnx 设置了一个超时时间,防止程序意外挂死导致死锁。而且该操作更具有原子性,更加线程安全