最近在看狂神的视频 总结了一下他上课讲的东西 超级佩服膜拜狂老师
什么是Nosql
Nosql=not only sql(不仅仅是sql)
Nosql泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代尤其是超大规模的高并发的社区,暴露出很多难以克服的问题,Nosql在当年大数据环境下发展的十分迅速,redis是其中发展最快的,而且是我们当下必须要掌握的一门技术
很多的数据类型比如用户的个人信息、社交网络、地理位置。这些数据类型的存储不需要一个固定的格式,不需要多月的操作就可以横向扩展 比如Map<String,Object>使用键值对来控制
redis五大基本数据类型
- String
- List
- Set
- Hash
- Zset
三种特殊数据类型
- geo
- hyperloglog
- bitmap
redis持久化
-
ROB
-
AOF
了解一下3v 3高
3v :描述问题
- 海量Volume
- 多样Variety
- 实时VeLocity
3高:主要对程序的要求
- 高并发
- 高可扩
- 高性能
Nosql的四大分类
kv键值对
文档型数据库
redis
是什么?
redis能干吗
- 内存存储、持久化、内存中是断电即失,所以说持久化很重要(rdb 、aof)
redis是单线程的
- redis是很快的,是基于内存的操作,cpu不是redis 性能的瓶颈,redis的瓶颈是机器的内存和网络带宽
- redis是c语言写的 ,读写速度100000qps左右,不比k-v(对象缓存系统)的memecache差
redis为何是单线程的还这么快
redis基本命令
set:
- sadd myset hello :向set集合中添加元素
- smember mykey :查看指定set的所有值
- sismember myset hello :判断一个值是不是在set集合中
- scard myset :获取set集合中的内存元素个数
- smove myset myset2 hello :移动myset的hello的值到myset2集合
hash
- hset myhash field1 lwh :set一个具体的k-v
- hget myhash filed1 :获取一个字段值
- hmset myhash fileld1 hello field2 world :set 多个k-v
- hmget myhash fileld1 fileld2 :获取多个字段值
- hgetall myhash :获取全部数据
- hlen myhash :获取hash表的字段数量
- hexists myhash field1:判断hash中指定字段是否存在
- hkeys myhash:获取所有的(key)filed
- hvals myhash:获取所有的value
hash适合存储user name age 尤其是用户信息之类的,经常变动的信息,hash 更适合于对象的存储,string更适合字符串存储
zset
- 有序的set集合
- 可进行排序
geo
- 存储地理位置信息
hyperloglog(有较小的误差0.81%的错误率 ,效率高)
- 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
- 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
bitmap
- 位存储 就0 1 两个状态
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。