吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 26386|回复: 15
收起左侧

[Java 转载] 面试Java被问到Redis数据结构的几个面试题

  [复制链接]
NullPointer 发表于 2016-11-26 21:34
Redis数据结构的面试题答案下面几乎可以涵盖。
时间复杂度的话去官网看下,每个命令的时间复杂度官网都给出了。

1、Redis的五种数据类型
字符串string:字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描述信息等,是标准的key-value,一般来存字符串,整数和浮点数。Value最多可以容纳的数据长度为512MB
应用场景:很常见的场景用于统计网站访问数量,当前在线人数等。incr命令(++操作)

列表list:Redis的列表允许用户从序列的两端推入或者弹出元素,列表由多个字符串值组成的有序可重复的序列,是链表结构。好比Java的linkedList,在往两端插入和删除数据时,效率是非常高的,往中间插入数据效率是很低下的。List中可以包含的最大元素数量是4294967295。
应用场景:1.最新消息排行榜。2.消息队列,以完成多程序之间的消息交换。可以用push操作将任务存在list中(生产者),然后线程在用pop操作将任务取出进行执行。(消费者)

集合set:Redis的集合是无序不可重复的,和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。
应用场景:1.利用交集求共同好友。2.利用唯一性,可以统计访问网站的所有独立IP。3.好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。

散列hash:Redis中的散列可以看成具有String key和String value的map容器,可以将多个key-value存储到一个key中。每一个Hash可以存储4294967295个键值对。
应用场景:例如存储、读取、修改用户属性(name,age,pwd等)

有序集合zset:和set很像,都是字符串的集合,都不允许重复的成员出现在一个set中。他们之间差别在于有序集合中每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。尽管有序集合中的成员必须是卫衣的,但是分数(score)却可以重复。
应用场景:可以用于一个大型在线游戏的积分排行榜,每当玩家的分数发生变化时,可以执行zadd更新玩家分数(score),此后在通过zrange获取几分top ten的用户信息。

免费评分

参与人数 4吾爱币 +2 热心值 +4 收起 理由
wentwent + 1 + 1 谢谢@Thanks!
Signal_over + 1 + 1 热心回复!
samacat + 1 谢谢@Thanks!
逝晓风 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ytx750 发表于 2016-11-26 23:09
很多朋友反映,说NoSQLFan上的资料不少,但是要找到自己实用的太难,于是萌生做这样一个专题的想法。通过将不同NoSQL产品从入门到精通的各种资料进行汇总,希望能够让大家更快的找到适合自己的教程或文章进行阅读。

本篇为Redis部分的资料汇总。保持持续更新。

1.Redis是什么?
•十五分钟介绍 Redis数据结构http://bbs.chinaunix.net/thread-3672088-1-3.html
•Redis系统性介绍http://blog.nosqlfan.com/html/3139.html?ref=rediszt
•一个很棒的Redis介绍PPThttp://bbs.chinaunix.net/thread-3672705-1-1.html
•强烈推荐!非同一般的Redis介绍http://bbs.chinaunix.net/thread-3672707-1-1.html
•Redis之七种武器http://bbs.chinaunix.net/thread-3672093-1-3.html
•锋利的Redishttp://bbs.chinaunix.net/thread-3672094-1-3.html

•redis 适用场景与实现http://bbs.chinaunix.net/thread-3672708-1-1.html
2.Redis内部实现

•Redis源码分析系列文章http://bbs.chinaunix.net/thread-3672095-1-3.html
•深入Redis内部-Redis 源码讲解http://bbs.chinaunix.net/thread-3672097-1-3.html
•redis源码分析-如何rehashhttp://bbs.chinaunix.net/thread-3672522-1-3.html

•Redis源码分析-内存分配http://bbs.chinaunix.net/thread-3672525-1-3.html
•深入Redis内部-Redis GET、SET 操作过程http://bbs.chinaunix.net/thread-3672527-1-3.html
•Redis深入浅出-Redis内部结构图解PPThttp://bbs.chinaunix.net/thread-3672528-1-3.html
•深入理解Redis内部实现http://bbs.chinaunix.net/thread-3672529-1-3.html
•Redis zipmap内存布局分析•Redis内存存储结构分析http://bbs.chinaunix.net/thread-3672533-1-3.html
•Redis2.4 backgroud thread•Redis2.4版的自动bgrewriteaofhttp://bbs.chinaunix.net/thread-3672536-1-3.html
•Redis集群功能说明http://bbs.chinaunix.net/thread-3672537-1-3.html
•Redis进阶教程-aof(append only file)日志文件http://bbs.chinaunix.net/thread-3672538-1-3.html
•内存是新的硬盘之Redis存储http://bbs.chinaunix.net/thread-3672540-1-3.html
•Redis String类型实现原理•Redis事件驱动库结构http://bbs.chinaunix.net/thread-3672542-1-3.html
•Redis SPOP不随机的问题http://bbs.chinaunix.net/thread-3672543-1-3.html
•听 antirez 讲 Redis Clusterhttp://bbs.chinaunix.net/thread-3672548-1-3.html
•Redis几个认识误区http://bbs.chinaunix.net/thread-3672549-1-3.html
3.Redis应用、优化及运维
•Redis运维之道(视频+PPT)http://bbs.chinaunix.net/thread-3672551-1-3.html
•使用Redis bitmap进行活跃用户统计http://bbs.chinaunix.net/thread-3672553-1-3.html
•Redis采用不同内存分配器碎片率对比http://bbs.chinaunix.net/thread-3672554-1-3.html
•Redis优化之网络延迟http://bbs.chinaunix.net/thread-3672555-1-3.html
•Redis 数据库结构设计http://bbs.chinaunix.net/thread-3672556-1-3.html
•利用Redis构建高效的实时搜索http://bbs.chinaunix.net/thread-3672557-1-3.html
•Redis内存容量的预估和优化http://bbs.chinaunix.net/thread-3672559-1-3.html
•节约内存:Instagram的Redis实践http://bbs.chinaunix.net/thread-3672560-1-3.html
•Bump的Redis应用经验http://bbs.chinaunix.net/thread-3672561-1-3.html
•Wooga的Redis迁移经验http://bbs.chinaunix.net/thread-3672562-1-2.html
•新浪微博开放平台Redis实践http://bbs.chinaunix.net/thread-3672563-1-2.html
•RedBridge: 为Redis提供HTTP API及连接池功能http://bbs.chinaunix.net/thread-3672565-1-2.html
•基于位置的实时游戏MapAttack的技术实现http://bbs.chinaunix.net/thread-3672566-1-2.html
•使用Cacti监控MongoDB和Redishttp://bbs.chinaunix.net/thread-3672568-1-2.html
•Redis复制与可扩展集群搭建http://bbs.chinaunix.net/thread-3672569-1-2.html
•Redis + PHP 最佳实践!http://bbs.chinaunix.net/thread-3672570-1-2.html
•Redis应用案例,查找某个值的范围http://bbs.chinaunix.net/thread-3672571-1-2.html
•yCon2011 PPT分享:Redis与Pythonhttp://bbs.chinaunix.net/thread-3672572-1-2.html
•浅谈Redis数据库的键值设计http://bbs.chinaunix.net/thread-3672573-1-2.html
•案例:用Redis来存储关注关系http://bbs.chinaunix.net/thread-3672574-1-2.html
•用Redis存储好友关系-python版http://bbs.chinaunix.net/thread-3672575-1-2.html
•WebSockets+Redis构建EventMachinehttp://bbs.chinaunix.net/thread-3672576-1-2.html
•django-redis-cache:用Redis作django的缓存层

•Reds:一个Redis加Node.js的全文搜索引擎http://bbs.chinaunix.net/thread-3672578-1-2.html
•phpRedisAdmin:Redis的WEB界面管理工具http://bbs.chinaunix.net/thread-3672579-1-2.html
•redis_warp、redis_graph、redis_queue - Python下的Redis二次开发•一个适用于CentOS下的Redis启动脚本http://bbs.chinaunix.net/thread-3672581-1-2.html
•OOREDIS:一个Pythonic的Redis库http://bbs.chinaunix.net/thread-3672582-1-2.html
•Redis 运维实际经验纪录之一http://bbs.chinaunix.net/thread-3672583-1-2.html
•小文件存储的方案对比:nginx、Redis、Moosefs•快速构建实时抓取集群http://bbs.chinaunix.net/thread-3672586-1-2.html
•游戏公司wooga的Redis架构变迁http://bbs.chinaunix.net/thread-3672587-1-2.html
•Redis作者谈Redis应用场景http://bbs.chinaunix.net/thread-3672588-1-2.html
•Instagram的实时图片Demo:Node.js, Redis 加 Web Socketshttp://bbs.chinaunix.net/thread-3672589-1-2.html
•用Redis构建访问频率控制模块http://bbs.chinaunix.net/thread-3672590-1-2.html
•Redis-Sampler:深入了解你的Redis存储http://bbs.chinaunix.net/thread-3672591-1-2.html
•Redis实现MongoDB的getlasterror功能http://bbs.chinaunix.net/thread-3672592-1-2.html
•Redis在.NET上的应用教程http://bbs.chinaunix.net/thread-3672596-1-2.html
•Facebook游戏开发商wooga的架构:基于MySQL和Redis http://bbs.chinaunix.net/thread-3672598-1-2.html
•How Digg is Built:讲述Digg背后的技术http://bbs.chinaunix.net/thread-3672599-1-2.html
•redisfs – Redis+FUSE 构建的文件系统http://bbs.chinaunix.net/thread-3672600-1-2.html[/url
•foursquare 的数据分析系统(Hadoop+Hive+Redis+MongoDB)http://bbs.chinaunix.net/thread-3672603-1-1.html
•redis-sharding – 一个 Redis Proxyhttp://bbs.chinaunix.net/thread-3672604-1-1.html
•Digg 采用Redis作计数存储http://bbs.chinaunix.net/thread-3672606-1-1.html
•Redis容量及使用规划http://bbs.chinaunix.net/thread-3672608-1-1.html
•Webdis – 为 Redis 提供 HTTP 接口http://bbs.chinaunix.net/thread-3672610-1-1.html
•实现你自己的 Bloom-Filterhttp://bbs.chinaunix.net/thread-3672611-1-1.html
•Redis、MongoDB在Amazon云服务中的应用http://bbs.chinaunix.net/thread-3672613-1-1.html
•Redissql 用SQL语法玩弄你的Redishttp://bbs.chinaunix.net/thread-3672614-1-1.html
•Redis Pipelining功能介绍http://bbs.chinaunix.net/thread-3672615-1-1.html
•Redis Web界面管理工具http://bbs.chinaunix.net/thread-3672619-1-1.html
•RestMQ:基于Redis的HTTP队列系统http://bbs.chinaunix.net/thread-3672621-1-1.html
•用Redis存储大量数据http://bbs.chinaunix.net/thread-3672622-1-1.html
•一个Redis的.NET客户端http://bbs.chinaunix.net/thread-3672625-1-1.html
4.Redis发展现状及展望
•Redis2.6新功能预告:aof性能提升http://bbs.chinaunix.net/thread-3672607-1-1.html
•Redis作者拒绝微软的Windows补丁http://bbs.chinaunix.net/thread-3672609-1-1.html
•Redis短期发展规划http://bbs.chinaunix.net/thread-3672612-1-1.html
•Redis作者详谈2.4版本改进http://bbs.chinaunix.net/thread-3672616-1-1.html
•Redis 测试引擎将升级提速http://bbs.chinaunix.net/thread-3672618-1-1.html
•Redis新分支,进行服务端lua脚本支持的开发http://bbs.chinaunix.net/thread-3672620-1-1.html
•antirez 的Redis 宣言!http://bbs.chinaunix.net/thread-3672627-1-1.html
•Redis 或弃用当前 VM 机制,采用新的 diskstore 模型http://bbs.chinaunix.net/thread-3672630-1-1.html
•Redis数据库?-Redis的Virtual Memory介绍http://bbs.chinaunix.net/thread-3672629-1-1.html
•Redis增加对UDP的支持http://bbs.chinaunix.net/thread-3672631-1-1.html
•Redis完成Pub/Sub功能开发http://bbs.chinaunix.net/thread-3672632-1-1.html
5.相关新闻
•Redis4You:Redis云存储服务•REDIS TO GO:一个Redis存储服务http://bbs.chinaunix.net/thread-3672594-1-2.html
•lodis:一个JavaScript实现的本地Redis存储http://bbs.chinaunix.net/thread-3672595-1-2.html
•Redis命令参考中文版翻译http://bbs.chinaunix.net/thread-3672597-1-2.html
•6379-为何Redis选择它作为默认端口号?http://bbs.chinaunix.net/thread-3672601-1-1.html
•Cinderella 提供对MongoDB、Redis的支持http://bbs.chinaunix.net/thread-3672602-1-1.html
•Redis的丑兄弟-Bigdis简介http://bbs.chinaunix.net/thread-3672605-1-1.html
javaLP 发表于 2016-11-26 23:46
list说错了  list毫无疑问在redis里面采用双向链表 ,内存为不连续  ,每个node具有pre  与next指针指向前节点与后节点  因此无论你从那个位置插入元素只需要改变指针  所以没有楼主说的前后插入方便  中间复杂度高   这里感觉楼主的数据结构有些薄弱  再次redis的5种基本类型  String list hash  set  zset应该是脱口而出  重点应该放在集群 例如主从一致  容灾

记住了解数据结构 时间复杂度 绝不是死记硬背
gtbyang 发表于 2016-11-26 22:58
javaLP 发表于 2016-11-26 23:48
gtbyang 发表于 2016-11-26 22:58
貌似做大数据的用来存储消息队列也会涉及

一般做缓存  消息队列 使用的少
Danielzero 发表于 2016-11-26 23:56
支持下楼主,长长见识
woshiyjjwudi 发表于 2016-11-27 01:05
厉害了,膜拜,我就一潜水
逝晓风 发表于 2016-11-27 01:35
过来学知识了
post927 发表于 2016-11-27 02:15
楼主请收下 我的膝盖,哈哈
 楼主| NullPointer 发表于 2016-11-27 12:12 来自手机
javaLP 发表于 2016-11-26 23:46
list说错了  list毫无疑问在redis里面采用双向链表 ,内存为不连续  ,每个node具有pre  与next指针指向前 ...

学习了,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 18:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表