文章目录
- NoSQL概述
- Redis概述
- Redis的数据类型
- Keys的通用操作
- Redis的特性
- Redis的持久化
NoSQL概述
NoSQL = Not Only SQL
非关系型的数据库
为什么需要NoSQL
Web2.0 网页互动频繁,交互量大。
- High performance - 高并发读写
- Huge Storage - 海量数据的高效率存储和访问
- High Scalability & High Availability - 高可扩展性和高可用性
NoSQL数据库四大分类
- 键值对(key-value)
- 列存储
- 文档数据库
- 图形数据库 (Neo4j)
NoSQL数据库特点
- 易扩展
- 灵活的数据类型
- 大数据量 高性能
- 高可用
Redis概述
高性能键值对数据库,支持的键值数据类型
- 字符串类型
- 列表类型
- 有序集合类型
- 散列类型
- 集合类型
Redis应用场景
- 缓存
- 任务队列(秒杀 抢购)
- 网站访问统计
- 数据过期处理
Redis的数据结构
五种数据类型:
- 字符串(String)
- 哈希(hash)
- 字符串列表(list)
- 字符串集合(set)
- 有序字符串集合(sorted set)
key定义的注意点:
- 不要太长
- 不要过短
- 统一命名规范
String
存储String
- 二进制安全
- Value最多可容纳数据长度是512M
常用命令 - 赋值 set
- 取值 get
- 删除 del
- 数值增减 incr
- 扩展命令 append
set name "runoob"
get name
del name
Hash
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 **string 类型的 field 和 value 的映射表,**hash 特别适合用于存储对象。
redis> HMSET myhash field1 "Hello" field2 "World" # HMSET同时设置多个键值对
"OK"
redis> HSET myhash2 field1 "Hello" # HSET设置1个键值对
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
redis> HDEL myhash field1 field2 # 删除
"World"
HM是多个 H是一个 HDEL删除单独属性 DEL全部删除
- hkeys 所有的key
- hlen 长度
- hexists 是否存在
- hvals 获取所有的值
List
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
存储List
- ArrayList 数组
- LinkedList 双向链表
操作:
- 左边插入 lpush
- 有值则插入 无值不插入 lpushx
- 右边插入 rpush
- 查看元素 lrange
- 左边弹出 lpop
- 右边弹出 rpop
- 长度llen
- 删除 lrem
- 更改 lset
- 指定值的位置插入 linert
- 压入弹出 rpoppush
set
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。不允许出现重复的元素
操作集合
- sadd 添加
- srem 删除
- sismember 成员
- sdiff 差集
- sinter 交集
- sunion 并集
- scard 数量
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- 游戏排名
- 热点话题
zset的成员是唯一的,但分数(score)却可以重复。
- zadd mysort 70 zs 80 ls 添加
- zscore mysort zs 获得分数
- zcard 长度
- zrem 删除
- zrange 查看元素
- zrange withscores 排序查看元素
- zrevrange 逆序
- zremrangebyrank 按key进行删除
- zremrangebyscore 按score进行删除
附上链接 后面再做https://www.imooc.com/video/14938