redis 数据类型(字符串)

  • redis最基本的类型,最大能存储512M的数据,string类型是二进制安全的,即可以存储任何数据,比如数字、图片、序列化对象等

设置值(存值)

  • 设置键值

set 键 值
  • 设置键值及过期时间(以秒为单位)

setex 键 时间 值
  • 设置多个键值

mset 键 值 键 值....

获取

  • 根据键值获取值,如果键不存在则返回null

get
  • 根据多个键获取多个值

mget 键 键 键 ...

运算:值是字符串类型的数字

  • 将key对应的值加1

incr
  • 将key对应的值加1

decr
  • 将key对应的值加一个整数

incrby 键 整数
  • 将key对应的值加一个整数

decrby 键 整数

其他

  • 追加值(他返回的值是追加后的长度)

append 键 值
  • 获取值长度

strlen
  • 获取过期时间

ttl

应用场景

  • 高速缓存HTML片段或页面

  • 高速缓存关系型数据库查询的数据结果

  • 高速缓存会话控制数据(将session存到redis中;当页面在两台服务器上时,从一个页面到另一个页面时会读取不到session值获取不到登录状态,这时可以通过redis进行存储session,访问页面时读取redis中的session)

  • 分布式锁

# 当前clock不存在时设置值
# 当两个应用同时设置同一个key时只有一个应用能设置成功
# 只有设置key成功的应用才允许继续执行,另一个应用需要等待
setnx clock 123456
# 删除key
# 使用LRU脚本保证删除的key是应用设置的那个key,避免错误删除
EVAL "<<<'LUA'
if redis.call('get',KEYS[1]) == ARGV[1] then
   return redis.call('del',KEYS[1])
else
   return 0
end
LUA"  1 key argvalue

  • 防止重复提交

  • 存储设置固定格式的字符串序列(如:时间序列)

  • 统计访问者数量

  • 统计某天的注册用户数

  • 限制API在某一时间段的访问次数

  • 用户签到

  • 统计活跃用户

  • 用户在线状态

  • 点赞场景

# 每次点赞加+
incr items:1
# 获取点赞数量
get items:1