1 了解Redis
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
2 常用的数据类型
2.1 String
// 常用命令
set key value
get key
del key
mset key1 value1 key2 value2 key3 value3
mget key1 key2 key3
strlen key // 获取数据长度
append key value // 追加数据
// 扩展知识=》在需要数库分库分表的时候需要保证id的唯一性在redis中的解决方案
// 一下的key默认最大支持java的Long类型的长度
// redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。
incr key // 默认值key是1、每执行一次加1并且返回增加后的数据
incrby key value// 可以增加可以给定值,每执行一次加给定的value值并且返回增加后的数据
decr key // 跟以上结果相反减一
decrby key value // 跟以上结果相反减给定的值
// 扩展知识=》可以给string定时失效
// 1、秒
// setex key seconds value
setex key 10 1
// 2、毫秒
// setex key milliseconds value
psetex key 10000 1
2.1 Hash类型
// 常用命令
// hset key field value
hset user name name
hset user age 24
// hgetall key
hget user // 结果是 =》 { name: "name", age: "24"}
// hget key field
hget user name // 结果是 =》 name
hget user age // 结果是 =》 24
// hdel key field1
hdel user name
// hmset key field1 value1 field2 value2 field3 value3
hmset key field1 value1 field2 value2 field3 value3
// hmget key field1 field2 field3
hmget key field1 field2 field3
// hlen key // 获取哈希表中字段的数量
hlen key
//获取哈希表中是否存在指定字段
hexists key field
// 获取哈希表中的所有字段的键或者值
hkeys key
hvals key
// hash类型的引用场景 =》 商城购物车
// hset 用户ID 商品ID 购物车中商品数量
hset userID skuID nums
// 修改商品购物车商品数量 hincrby 用户ID 商品ID 增加的数量
HINCRBY userID skuID 6
// hset 用户ID 商品ID 购物车中商品信息
hset userID skuID skuInfo
// 购物车是用户常访问的数据放到redis中可以提高效率
// 当用户修改购物车数量时可以很方便的修改购物车数量
// 当用户加入购物车商品其他用户也加入是分两个表查询可以减少skuInfo的数据冗余