Redis的类型以及各自类型的使用场景(一)

NoSQL数据库之Redis数据库管理

NoSQL的介绍

NoSQL(NoSQL=Not Only SQL),意为反SQL运动,是一项全新的数据库革命性运动,它是指非关系型数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0纯动态网站已经显得力不从心,特别是超大规模和高并发的ANS类型的纯动态网站,暴漏了很多难以克服的困难,而非关系类型的数据库则由于其本身的特点得到了非常迅速的发展。
NoSQL是以Key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准,ACID属性,表结构等等,这类数据库主要有以下特点:非关系型的、分布式、开源的、水平可扩展的。
Mysql里的select、inser、,update、delete语句在NoSQL中不适用。
ACID属性:事务处理。(整个的过程为事务,第一步完成第二部没完成,就回滚初始状态)
表结构:NoSQl不需要建立表结构
NoSQl的特点

  1. 处理超大量的数据
  2. 运行在便宜的PC服务器集群上
    3.击碎了性能瓶颈

NoSQL适用的场景

  1. 对数据库高并发读写
  2. 对海量数据的高效率存储和访问
  3. 对数据的高可扩展性和高可用性
    NoSQL做分布式

Redis的介绍

Redis是一个开源的,先进的Key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,链表,集合,有序集合
链表:做栈和队列,
队列先进先出,
是先进后出,
Redis是一个Key-Value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove

及取交集和并集及更丰富的操作,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

对数组加入一个元素array_push,array_pop弹出一个元素。

提供的API语言:C、C++、PHP

Redis适用场景

目前全球最大的Redis的用户是新浪微博,在新浪微博有200多台物理机,400多个端口正在运行着Redis上来为微博用户提供服务。
在新浪微博Redis的部署场景很多,大概分为如下两种:

  1. 应用程序直接访问Redis数据库

  2. 应用程序直接访问Redis,只有当Redis访问失败时才能访问Mysql

例如:把大象装冰箱的过程:

  1. 打开冰箱门
  2. 把大象装进冰箱
  3. 把冰箱门关上
    大象很大,装进冰箱很费劲,怎么办?
    而Redis数据库提供多种灵活数据结构和数据操作,为不同的大象构建不同的冰箱。
Redis适用的场景:
  1. 取最新N个数据的操作
  2. 排行榜应用,取TOP****N****操作
  3. 需要精确设定过期时间的应用(key设置过期时间)
  4. 计数器应用
  5. Uniq操作,获取某段时间所有数据排重值
  6. 实时系统,反垃圾系统
  7. Pub/Sub构建实时消息系统(发布与订阅)
  8. 构建队列系统(list构建栈和队列)
  9. 缓存
    String
    1.计数器应用
    List
    1. 取最新N个数据的操作
    2. 消息队列
      3.删除与过滤
    3. 实时分析正在发生的情况,用于数据统计与防止垃圾邮件(结合Set)
      Set
      1.Uniqe操作,获取某段时间所有数据排重值
      2.实时系统,反垃圾系统
      3.共同好友、二度好友
      4.利用唯一性,可以统计访问网站的所有独立 IP
      5.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐
      Hashes
      1.存储、读取、修改用户属性
      Sorted Set
      1.排行榜应用,取TOP N操作
      2.需要精准设定过期时间的应用(时间戳作为Score)
      3.带有权重的元素,比如一个游戏的用户得分排行榜
      4.过期项目处理,按照时间排序
      NoSQL不存在表结构的概念

Redis的数据类型

string,hash ,list,set,zset

Strings类型及操作

String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象
同一个键只能包含一个数据
serialize序列化函数 string serialize ( mixed $value )

set
设置key对应的值为string类型的value
例如:我们添加一个name=lijie的键值对redis 127.0.0.1:6379>set name lijie
例如:我们添加一个name=lijie的键值对redis 127.0.0.1:6379>set name lijie

图片1.png

setnx
设置key对应的值为string类型的value,如果key值已经存在,返回0,nx是not****exit的意思
例如:我们添加一个name=liejie_new的键值对

图片2.png

Name键已经存在返回0,并且不更新。

setex
设置key对应的值为string类型的value,并指定此键值对应的有效期。
例如:我们添加一个haricolor=red的键值对,并指定有效期为10秒

图片3.png

setrange
设置指定key的value值的子字符串
例如:我们希望将lijie的126邮箱替换为163邮箱
从第六个字符开始替换后面的所有字符,如果要替换的字符串没有原来的字符串长,那么后面接着跟上原来的字符串(后面的字符串不会覆盖)

图片4.png

mset
一次设置多个key的值,成功返回ok表示所有的值都设置,失败返回0表示没有任何值被设置。

图片5.png

msetnx
一次设置多个key的值,成功返回ok表示所有的值都被设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。

图片6.png

只要有一个设置不成功,这都不设置
图片7.png

get
获取key对应的string值,如果key不存在返回nil。

getset
设置key的值,并返回key的旧值。

图片8.png

Getrange
获取key的value值的子字符串

图片9.png

mget
一次获取多个key的值,如果对应key不存在则对应返回nil。

图片10.png

incr
对key的值做加加的操作,并返回新的值。

图片11.png

incrby
同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0.

图片12.png

正在加负值为减

decr
对key的值做减减的操作

图片13.png

decrby
同decr类似,减指定值。

图片14.png

传正数是自减,负数是自增

append
给指定字符串追加value,返回新字符串值的长度。
添加了一个.net的字符串

图片15.png

strlen
取指定的key的value值的长度。

图片16.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容