转自:http://www.cnblogs.com/linjiqin/p/5733541.html

Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。

Redis常用的数据类型主要有以下五种:
String
Hash
List
Set
Sorted set

1、String
1.1、常用命令:set,get,decr,incr,mget 等。

1.2、应用场景:
String是最常用的一种数据类型,普通的key/value存储都可以归为此类,这里就不做解释了。

2、Hash
2.1、常用命令:hget,hset,hgetall等。

2.2、应用场景:
我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:
用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:

第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。


第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可怕的。

那么Redis提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口,如下图:

也就是说,Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。很好的解决了问题。

这里同时需要注意,Redis提供了接口(hgetall)可以直接取到全部的属性数据,但是如果内部Map的成员很多,那么涉及到遍历整个内部Map的操作,由于Redis单线程模型的缘故,这个遍历操作可能会比较耗时,而另其它客户端的请求完全不响应,这点需要格外注意。

3、List
3.1、常用命令:lpush,rpush,lpop,rpop,lrange等。

3.2、应用场景:
Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现,比较好理解,这里不再重复。

4、Set
4.1、常用命令:sadd,spop,smembers,sunion 等。

4.2、应用场景:
set对外提供的功能与list类似,是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重复成员,这个也是list所不能提供的。

5、Sorted set
5.1、常用命令:zadd,zrange,zrem,zcard等

5.2、使用场景:
Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

Redis应用场景一相关推荐

  1. AliCloudDB for redis应用场景之存储最新N条聊天记录

    AliCloudDB for redis应用场景之存储最新N条聊天记录 场景介绍 在各种IM通信工具中,常常需要展示最新的聊天记录,这种数据写入频繁,对响应时间要求高.一般情况,这种场景通常会选择持久 ...

  2. Redis应用场景说明与部署

    Redis简介 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的memcached缓存服务很像,但是red ...

  3. Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记

    redis和数据库怎么写同步? 分布式如何达到一致性? CAP 一致性.可用性.性能 HA:高可用,不存在没有任何时延.没有任何波动的高可用 容忍度只要达标,就可以.不要为了技术而技术->你会否 ...

  4. 转载:Redis 应用场景

    2019独角兽企业重金招聘Python工程师标准>>> 1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...

  5. Redis应用场景(转)

    (来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五 ...

  6. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

  7. Redis应用场景-排行榜

    文章目录 Redis应用场景-排行榜 前言 排行榜 今日热搜 热门视频排行榜 周歌曲点播榜 参考文档 Redis应用场景-排行榜 前言 使用Redis的有序集合(Sorted set)可以很方便地实现 ...

  8. 详解 Redis 应用场景及应用实例

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  9. Redis 应用场景和应用实例详解

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  10. 详解 Redis 应用场景及原理

    本文转自https://blog.csdn.net/niucsd/article/details/50966733,描述了redis实现原理和应用场景,篇幅较长,有意学习redis的同学可耐心阅读. ...

最新文章

  1. 用html5的canvas画布绘制贝塞尔曲线
  2. 看完这篇文章之后,终于明白了编译到底怎么回事。
  3. nodejs连接mysql报connect ECONNREFUSED错误的解决方法
  4. 安装UBUNTU Server 11.10
  5. HALCON示例程序bottle.hdev、bottlet.hdev瓶体字符OCR的训练和检测
  6. 更改tomcat自带的logo
  7. 计算机组装与维护报告论文,计算机组装与维护实习报告范文
  8. 风险意识培训教程(续)
  9. python md5加密字符串_python md5加密字符串的例子
  10. 让极路由给支持WDS的路由器无线桥接教程
  11. python解二阶微分方程组_用Python求解一阶和二阶微分方程组
  12. 特殊字符--百度百科
  13. 【笔记】underfined和null
  14. 高级篇之ENC编码器实现简单视频会议的方案
  15. Xcode一键发布到AppStore
  16. JavaScript入门小试,水仙花数的辨别以及再深入学习一些定义区间。
  17. EventBus基础
  18. oppoR17手机计算机的隐藏功能,oppor17怎么隐藏应用?oppor17隐藏应用教程
  19. 世界上为什么有那么多的不幸的人
  20. Educoder计算机数据表示实验(HUST)第5关:16位海明编码电路设计

热门文章

  1. weblogic管理3 - 生产模式下免密码管理配置
  2. 如何提高网络安全指数
  3. CentOS首次安装,网络环境配置
  4. Openfire:安装指南
  5. 375 Inscribed Circles and Isosceles Triangles 等腰三角形 内接圆 圆周率PI表示
  6. 如何创建隐藏用户帐号
  7. 严重的“Access:7”供应链漏洞影响100多家厂商150多款联网设备等产品
  8. 成都睿铂x云南省地矿测绘院:丽江玉龙高精度地籍免像控案例分享
  9. SP913 QTREE2 - Query on a tree II
  10. 政府数据泄漏频现 美国能源部也未幸免