第一章nosql概述
为什么需要Nosql 非关系形数据库
1.高并发读写High
2.海量数据的高效率存储和访问
3.高可扩展和高可用性
这些问题通过关系性数据库无法解决
nosql 主流的产品 redis mongoDB
nosql数据库的四大分类
1.键值存储 redis
2.列存储
3.文档数据库 mongoDB 数据结构要求不是特别高
4.图形数据库
1.容易扩展
2.灵活的数据模型
3.大数据量,高性能
4.高可用
redis概述
什么是redis
高性能键值对数据库,支持的键值数据库类型
数据类型有
字符串类型,散列类型,列表类型,集合类型,有需集合类型
redis的应用场景
1.缓存
2.任务队列
3.网站访问统计
4.数据过期处理
5.分布式集群架构中的session分离
redis的安装
设置键
set name imooc 设置值
get name 获得值
del name 删除值
keys *获得所有的键
Jedis入门
Jedis介绍
Jedis是redis官方首选的Java客户端开发包
redis的数据结构
set
常用命令
添加
sadd myset a b c 向myset中添加a b c三个值
删除
srem myset a 删除 myset中的a元素
获得集合
smembers myset 查看myset里面的值
sismember myset a 判断a在不在myset这个集合里面
如果返回1表示存在 0表示不存在
差集
sadd mya1 a b c
sadd myb1 a c 1 2 添加两个集合求差集
sdiff mya1 myb1 求出两个集合中存在不同的值
交集
sadd mya1 a b c
sadd myb1 a c 1 2 添加两个集合求交集
sinter mya1 myb1 求出两个集合一样的元素
并集
sadd mya1 a b c
sadd myb1 a c 1 2 添加两个集合求并集
sunion mya1 myb1 会将重复的元素去掉 然后将两个集合中的元素合并
扩展命令
scard myset 得到 集合中的数量
srandmember myset 随机访问成员
sdiffstore my1 mya1 myb1 将mya1和myb1 相差的元素存入到一个my1的新元素
sinterstore 存交集的元素到新集合 同上(使用方式)
sunionstore 存并集的结果存入到新集合 同上(使用方式)
使用场景
唯一性数据
用于维护数据对象之间的关联关系 比如两个很大产品的订单可以用set的交集查询出购买了两种产品的客户
storted-set
storted-set 有序value可重复
应用场景:
微博热点话题
以及排行
常用命令
添加
zadd mysort 70 zs 80 ls 90 ww 如果添加相同的则会覆盖
获得
zscore mysort zs 获得分数
zcard mysort 获得集合的个数
删除
zrem mysort tom 删除
范围查询
zadd mysort 85 jack 95 rose
zrange mysort 0 -1 查询mysort里面所有的元素 只显示键 显示名字
zrange mysort 0 -1 withscores 键和值都会显示 名字和分数都会显示 从小到大排名
zrevrange mysort 0 -1 withscores 从大到小排名
zremrangebyrank mysort 0 4 按照范围进行删除
zadd mysysou 80 zs 90 ls 100 ws //为mysysou添加元素
zremrangescore mysysou 80 100 //按照分数删除
zadd mysort 70 zs 80 ls 90 ww
zrangbyscore mysort 0 100 查询出姓名
zrangebyscore mysort 0 100 withscores 姓名和分数都能查出
zrangebyscore myscort 0 100 withscores limit 0 2 按照分数和名字排序
zincrby mysort 3 ls 给李四的分数增加3
zcount mysort 80 90 查看80到90之间的个数
使用场景:
积分排行榜
构建索引的数据