NoSql之Redis数据类型

原创 2016年05月30日 20:21:06

       通过前面两篇博客,我们已经知道了NoSql以及redis的安装,今天我们正式介绍redis。

redis简介

       Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
       redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。
       redis 本质上一个 key-value db,所以我们首先来看看他的 key。首先 key 也是字符串类型,但是key 中不能包括边界字符。由于 key 不是 binary safe 的字符串,所以像”my key”和”mykey\n”这样包含空格和换行的 key 是不允许的。顺便说一下在 redis 内部并不限制使用 binary 字符,这是 redis 协议限制的。”\r\n”在协议格式中会作为特殊字符。

1.字符串string

       string 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个value,其上支持的操作与 Memcached 的操作类似。但它的功能更丰富。
       string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。
                这里写图片描述

2.列表list

list 是一个链表结构, 可以理解为一个每个子元素都是 string 类型的双向链表。 主要功能是 push、pop、获取一个范围的所有值等
其示意图和常用命令如下图所示:

                这里写图片描述
       List是一个链表结构,主要功能是push,pop,获取一个范围内的所有值等,我们可以从头部或者尾部添加或者删除元素,这样的list既可以作为栈又可以作为队列。

3.哈希hash

       一个哈希实际上是一组键值对的集合,哈希本身的键是“父键”,哈希中包含的若干字段是“子键”,每个“子键”都有相应的值。
                这里写图片描述
       我们可以把一个哈希看做关系数据库中的一行,哈希的每个子键对应行的一个字段。因此,当把关系数据库中的数据缓存至Redis时,使用哈希结构可能会带来方便。需要注意的是,哈希结构内部的子键之间是没有顺序关系的。
       Hash是一个String类型的field和value的映射表,适合存储对象。

4.集合set

       集合中的数据满足唯一性和无序性。集合在Redis内部是用哈希表实现的,所以插入和删除操作的时间复杂度均为O(1)。Redis为集合提供了求交并差等运算命令,使用起来非常方便。
                这里写图片描述

5.集合zset

       sorted t set 是有序集合,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,会自动重新按新的值调整顺序。
                这里写图片描述

应用场景

1.按照用户投票和时间排序
2.缓存
3.队列系统
4.实时系统,反垃圾系统等
       我们经常玩的微博里面的微博头条用到了list,而像一些粉丝关注一些人用到了set。也正是因为Redis具有多种数据结构,所以应用场景具有很多,我们更愿意称他为数据结构服务器,
       我们来分析一个问题,把大象装进冰箱:
1.打开冰箱
2.把大象放进冰箱
3.关闭冰箱
            这里写图片描述
       相信大家对于这几个步骤也是非常熟悉的,因为这几个步骤也就是我们访问数据库,对数据库进行CRUD的操作,所需要进行的步骤,连接数据库,进行操作,关闭数据库。
       那么我们来分析,如果按照如下图的方式去做,肯定是非常吃力的。
                  这里写图片描述

       而redis就可以帮助我们解决这些问题,因为Redis数据库提供多种灵活的数据结构和数据操作,为不同的大象构建不同的冰箱。
       当我们使用redis以后,我们的应用程序会首先访问redis,如图
                            这里写图片描述
       当从redis中拿不到数据时,我们的应用程序才会从数据库中读取。
        这里写图片描述
       而redis的数据是存储在内存中的,读取速度是比直接访问数据库快的。而这里面就涉及到了redis与其他缓存如memcached的区别,就是持久化,我们下次会讨论redis的持久化。

版权声明:本文为博主原创文章,未经博主允许不得转载。

NOSQL数据库浅析(三):Redis

Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Re...
  • qq_36031499
  • qq_36031499
  • 2017年01月04日 15:31
  • 817

Redis-高性能高并发NoSQL分布式缓存

http://www.redis.net.cn/tutorial/3503.html 1.简介: 2.Redis缓存的数据类型: 3.Redis物理存储: ...
  • zhulongxi
  • zhulongxi
  • 2016年12月06日 17:27
  • 870

Nosql学习之Redis资料(一)

一、简介:      在过去的几年中,NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。然而在众多产品中能够脱颖而出的却屈指可数,如Redis...
  • zhouqinghe24
  • zhouqinghe24
  • 2013年06月09日 12:10
  • 7561

NoSQL数据库memcache和redis区别()

在web后台发开面试中,经常会被问道memcache和redis的区别和使用情况。 其中memcache和redis都是基于内存存储的缓存系统,存储形式key--value键值对的形式。 区别: (1...
  • qq_21034239
  • qq_21034239
  • 2017年01月17日 20:38
  • 1572

redis数据类型 - Hash类型

hash类型,是一个string类型的field和value的映射表。 hash存放的是键值对,可以很方便的存放对象。 常用操作 hset 设置hash field为指定值,如果key不...
  • github_26672553
  • github_26672553
  • 2016年03月01日 11:47
  • 1053

NoSql——redis(高级操作)

redis nosql 主从复制 持久化 发布订阅
  • zllaptx4869
  • zllaptx4869
  • 2015年08月31日 16:00
  • 680

mongo,redis等NoSQL数据库性能比较

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2...
  • ctbinzi
  • ctbinzi
  • 2014年10月18日 22:11
  • 6034

NoSQL之Redis---集群教程

[不忘初心] 在通常情况下,Redis单机服务能够解决一般应用场景,但随着互联网数据的爆炸式增长,缓存的大小及组织方式也需要相对应的调整。本文源自于官方文档对于集群教程的通俗解释,我们先一起学习一下。...
  • ABCD898989
  • ABCD898989
  • 2016年07月04日 19:50
  • 2538

NOSQL(redis)与关系型DB区别

A。 redis主从 1。完成数据的热备份 2。完成一个读写分离 B。关系型数据库和NOSQL的一个比较 RDBMS 1) 优势 保持数据的一致性(事务管理) ...
  • MO_JM
  • MO_JM
  • 2017年03月03日 10:43
  • 479

memcache、redis等常用nosql解决方案,优缺点以及使用场景

1.存储容量:memcached超过内存比例会抹掉前面的数据,而redis会存储在磁盘 2.支持数据类型:memcached只支持string,redis支持更多。如:hash list集合 有序集...
  • weiwenjuan0923
  • weiwenjuan0923
  • 2016年09月26日 00:20
  • 1220
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NoSql之Redis数据类型
举报原因:
原因补充:

(最多只允许输入30个字)