Redis字符串数据结构的使用场景

各位晚上好,这几天复习一下Redis中的数据结构。

首先,字符串类型是Redis最基础的数据结构。首先,键(key)都是字符串类型,而且在Redis中的其他数据结构都是在字符串类型的基础上构建的。字符串类型的值实际可以是字符串(简单字符串、JSON或XML字符串),数字,甚至是二进制,但大小有限制(512M)。

那么,字符串数据结构的应用场景都有哪些呢?

应用场景一:缓存

先看示意图:

Web服务先从Redis中获取数据,如果命中,则对数据进行反序列化后直接返回,若在Redis中没有查询到,则去存储层获取数据返回给Web,并将获取到的信息序列化后存入到Redis。

应用场景二:共享Session。

在一个分布式Web服务中,往往会将用户的Session信息(比如,登录成功后的用户名等信息)保存在不同的服务器中,然而,出于负载均衡的考虑,分布式服务会将用户的访问均衡到不同服务器上,这样,当用户刷新一次访问可能会发现需要重新登录,这就比较尴尬了!

这时,可以将用户需要保存的Session信息集中管理,保存到Redis中。如图:

应用场景三:限速

我们都会有这样的体验,使用某平台时,不能在一分钟内重复提交多次,那么,Redis就可以完成这样的功能。

伪代码如下:

phoneNum="151xxxxxx"

key="shortMsg:limit:"+phoneNum;

isExists=redis.set(key,1,"EX 60","NX");

if(isExists!=null redis.incr(key)

// 可以访问,通过

}else{

// 不能访问,限速

}

那句“redis.set(key,1,"EX 60","NX");”的意思是在60秒之内不能对某个key设置值,而且该key60秒后过期。

今天的内容就是这些,明天再见。

各位,冲啊!

本文来自企鹅号 - 攀言媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏面朝大海春暖花开

微信小程序setData()对数组的操作

但是对于数组而言,再直接修改一个完整的数组显得有些多余,首先写着不简易,其次效率很是滴。

2345
来自专栏郭耀华‘s Blog

Python 中的 if __name__ == '__main__' 该如何理解

1033
来自专栏前端那些事

mongodb原生node驱动

写在前面 最近读《node.js学习指南》,对于mongodb没有介绍太多的工作原理,但是对于一个前端开发者,即使你还没有用过这种数据库也可以让你很好的理解和使...

2566
来自专栏Python中文社区

每天一个Linux命令:grep

grep 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则...

1885
来自专栏令仔很忙

Hibernate从入门到放弃(三)----持久化对象

当对象刚创建,和Session没有发生任何关系时,当程序运行完成就立刻消失,被称为瞬时态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识,如果程序中失...

1051
来自专栏武军超python专栏

2018年8月25日多进程编程总结

今天遇到的新单词: terminal    n终端 terminate  v结束,使终结 basic        adj基本的

1345
来自专栏LinXunFeng的专栏

iOS - Swift 创建代理协议的多种方式

1453
来自专栏Petrichor的专栏

aptitude指令

aptitude update #更新可用的包列表 aptitude upgrade #升级可用的包 aptitude dist-upgrad...

1163
来自专栏黑泽君的专栏

什么是Hibernate延时加载?

612
来自专栏十月梦想

ES6基础语法之模块化

比如我希望在a.js中使用b.js的变量或者函数,那么ES6就中模块化就帮到咱们啦!

1374

扫码关注云+社区