Redis应用

缓存、 计数器、 排行榜、 社交网络、 消息队列、 分布式锁

计数器 Redis天然支持计数功能,而且计数性能非常好,可以用来记录浏览量、点赞量等等。

排行榜 Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

社交网络 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新。

消息队列 Redis提供了发布订阅功能和阻塞队列的功能,可以满足一般消息队列功能。

分布式锁 分布式环境下,利用Redis实现分布式锁,也是Redis常见的应用。

数据结构介绍

基本类型: string hash list set sortedSet

特殊类型: GEO BitMap HyperLog

redis 通用命令

keys -- 查看那符合模板的所有key , 通配符 *

del -- 删除指定的key ,

mset -- 批量插入

exists -- 判断key 是否存在 1, 0

expire -- 设置到期时间,到期时key 被自动删除 expire second

ttl -- 查看一个key 的剩余有效期,-1 永久有效 -2 被删除

查看帮助

help @ 查看分组类型命令帮助

help 查看命令帮助

String 类型

redis 中最简单的数据类型

set -- 新增或者修改, 存在修改 不存在则新增

get -- 获取对应值

mset -- 批量新增

mget -- 批量获取

incr -- 让一个key 自增1

incrby -- 让一个整型 key 自增并指定步长, 负数 自减

incrbyfloat -- 让一个浮点型的数字自增指定步长

setnx -- 添加一个string 类型的键值对,不存在添加 存在不新增

setex -- 添加一个string 类型键值对,并指定有效期

思考

redis 的key 允许有多个单词形成层级结构, 多个单词之间使用":" 隔开

java 对象可以序列化成字符串存储

Hash 类型

value 值为一个无序字典。 类似java中的 hashMap

可以将每个字段独立存储,可以针对单个字段做 crud

hset key field value -- 添加或者修改 hash类型key的field的值

hget key field -- 查看/获取对应的值

hmset key -- 存储多组值

hmget key -- 查看多组值

hgetall -- 获取查看所有的值

hkeys -- 获取一个key中所有的field

hvals -- 获取一个key中所有的值

hincrby -- 让一个hash 类型的字段增长, 负数自减

hsetnx -- 添加一个hash 类型的key 的field 新增, 不存在则新增

List 类型

有序 元素可以重复 插入和删除快 查询速度一般

lpush key element -- 队首插入一个货多个元素

lpop key count -- 队首移除并返回n个元素

rpush -- 队尾

rpop -- 队尾

lrange key star end -- 返回一段角标范围内的元素

blpop/brpop key timeout -- 没有元素时等待指定时间,而不是直接返回null

如何模拟一个栈,模拟一个队列,模拟一个阻塞队列

Set类型

无序 元素不可重复 查找块 支持交集、并集、差集等功能

sadd key meber -- 向set 中添加一个或多个元素

srem -- 移除set中指定的元素

scrad -- 返回set中元素的个数

sidmember key member -- 判断是否存在某个元素

smembers -- 获取所有元素

sinter key1 key2 -- 求 key1 与 key2 交集

sdiff -- 求 差集

sunion -- 求 并集

SortedSet类型

可排序 、元素不重复、查询速度快、 底层一个跳表 一个hash表

zadd key sore member -- 添加

zrem key member -- 删除

zscore -- 获取指定元素的分数

zrank/zrevrank -- 获取排名 , rev 降序

zcard -- 获取所有元素个数

zcount key min max -- 统计在一定范围内的元素

zincrby key increment member -- 让socrted set 指定元素自增,步长指定

zrange -- 按照socre 排序后,获取指定排名范围内的元素

zrangebyscore -- 按照score 排序后 获取指定 score 范围内的元素

zdiff zinter zunion -- 求差集、交集、并集