1、redis工作原理,使用场景是什么?
- 排行榜
- 计数
2、你在项目中redis的存储有哪些?
- 排行榜
- 计数
3、redis支持的最大数据量是多少?
Strings类型:一个String类型的value最大可以存储512M
Lists类型:list的元素个数最多为2^32-1个,也就是4294967295个。
Sets类型:元素个数最多为2^32-1个,也就是4294967295个。
Hashes类型:键值对个数最多为2^32-1个,也就是4294967295个。
Sorted sets类型:跟Sets类型相似
4、列举一个常用的Redis客户端的并发模型。
- redis本身为单线程单进程模式
- redis可以采用队列模式将并发访问变为串行访问
- redis本身没有锁的概念
- Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题
对此有2种解决方法:
1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。
2.服务器角度,利用setnx实现锁。如某客户端要获得一个名字list的锁,客户端使用下面的命令进行获取:
Setnx lock.list current time + lock timeout
如返回1,则该客户端获得锁,把lock. list的键值设置为时间值表示该键已被锁定,该客户端最后可以通过DEL lock.list来释放该锁。
如返回0,表明该锁已被其他客户端取得,等对方完成或等待锁超时。
5、Redis,传统数据库,hbase,hive每个之间的区别
HBase
提供表状的面向列的数据存储
针对表状数据的随机读写进行优化
使用key-vale操作数据
提供灵活的数据模型
使用表状存储,支持MapReduce,依赖HDFS
优化了多次读,以及多次写
主要用来存储非结构化数据和半结构化的数据
MySQL
传统关系型数据库
注重关系
支持事务
Redis
分布式缓存
基于内存,
强调缓存,
支持数据的持久化,
支持事务的操作,
NoSql类型的Key/value数据库
支持List、Set等丰富的类型
Hive
hive是基于Hadoop的数据仓库工具
可以将结构化数据文件映射为数据库表
并提供sql功能,可以将sql转化为mr任务运行
sql学习成本低,不必专门开发mr应用
十分适合数据仓库的统计分析
6、redis支持的数据格式
Redis支持五种数据类型:string
(字符串),hash
(哈希),list
(列表),set
(集合)及zset
(sorted set:有序集合)。
7、 redis的性能瓶颈在哪里?
- 单机Redis,能承载QPS大概在上万到几万
- 单机 性能有限,必须搭集群
- 不能充分利用CPU的多核-
8、如何使得redis高并发可以支持10万Qps+?
- 单机比较难,一般也就几万
- 主从架构 -> 读写分离 -> 支撑10万+读QPS的架构