使用Nosql
传统mysql在大并发的情况并不能解决问题。所以需要存储在内存中的高速数据来支撑我们的系统。
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. Learn more →
Redis 是一种开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。 Redis 提供了数据结构,例如字符串、散列、列表、集合、带有范围查询的排序集合、位图、超级日志、地理空间索引和流。 Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久化,并通过 Redis Sentinel 和 Redis Cluster 自动分区提供高可用性
常用命令(string)
命令 | 作用 |
keys * | 查看当前库的所有key |
TTL | 查看key的剩余时间 |
expire | 设置过期时间 |
type | 查看字段类型 |
APPEND | 追加字符串 字符串不存在 相当于setkey |
STRLEN | 查看字符串长度 |
INCR | +1 |
DECR | -1 |
GETRANGE key1 0 3 | 截取指定位数字符串 |
SETRANGE key 1 xx | 替换指定位置的字符串 |
setex | 创建并设置过期时间 |
setnx | 不存在才设置 存在设置失败 (分布式锁里面会常常使用) |
fllushdb | 清空当前数据库 |
mset | 批量设置 |
msetnx | 批量设置如果不存在 (原子性操作) |
KEY user:{id}:name | 巧妙设计 |
getset | 先get 后 set 如果不存在返回null 存在拿之前的值 并设置新的值 |
常用命令(List)
命令 | 作用 |
LPUSH | 从左加入 |
RPOP | 从右弹出一个 |
LPOP | 从左弹出 |
RPUSH | 从右加入 |
LRANGE | 通过范围获取集合值 |
LLEN | 返回列表长度 |
LREM | 移除列表里面的值 lrem list 1 one (移除列表里面有one的 移除1个) |
ltrim list 1 2 | 截去指定范围的列表 |
RPOPLPUSH list1 list2 | 移除列表最后元素并添加一个元素 到新列表 |
LSET list 0 item | 更新一个值 不存在直接报错 |
LINSERT key BEFORE | AFTER privot value |
list实际上是一个链表 所以我们增加元素特别方便,有此特性,我们可以用作简单的MQ