redis初探

Redis实战《红丸出品》.pdf Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便 立即下载
1 数据类型

作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:

l  Lists (列表)

l  Sets (集合)

l  Sorted sets (有序集合)

l  Hashes (哈希表)

 

键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。

2.3.2 持久化

通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

33.3 主从同步

Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。

43.4 性能

相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显著的性能差异。

5.3.5 提供API的语言

l  C

l  C++

l  C#

l  Clojure

l  Common Lisp

l  Erlang

l  Haskell

l  Java

l  Javascript

l  Lua

l  Objective-C

l  Perl

l  PHP

l  Python

l  Ruby

l  Scala

l  Go

l  Tcl

6.3.6适用场合

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

 

下面是Redis适用的一些场景:

1、取最新N个数据的操作

比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取。

 

使用LPUSH latest.comments<ID>命令,向list集合中插入数据

插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID

然后我们在客户端获取某一页评论时可以用下面的逻辑

FUNCTION get_latest_comments(start,num_items):

    id_list = redis.lrange("latest.comments",start,start+num_items-1)

    IF id_list.length < num_items

        id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")

    END

    RETURN id_list

END

 

如果你还有不同的筛选维度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。

 

2、排行榜应用,取TOP N操作

这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

 

3、需要精准设定过期时间的应用

比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是对数据库中数据的索引,用Redis来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。

 

4、计数器应用

Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统。

 

5、Uniq操作,获取某段时间所有数据排重值

这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重。

 

6、实时系统,反垃圾系统

通过上面说到的set功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。

 

7、Pub/Sub构建实时消息系统

Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。

 

8、构建队列系统

使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。

 

9、缓存

这个不必说了,性能优于Memcached,数据结构更多样化。

转自:

红丸出品

http://blog.youkuaiyun.com/cdhongwan/article/details/7667874

C语言实现惯性导航初始对准全部核心代码 惯性导航初始对准包括间接粗对准和卡尔曼滤波精对准,其中。为基于卡尔曼滤波的精对准,其中。 阅读详情

相关推荐

双系统下 ubuntu 20.04 突然 开机黑屏报错 hdaudioC0D2: unable to configure disabling

今天在开实验室开双系统台式机时,ubuntu 20.04 系统下,突然在某次关机后再开机时,本来启动好好的,但是在进行图形化启动时,本来应该是显示输入账号和密码时,直接黑屏报错了,内容为 hdaudioC0D2: unable to configure disabling ,这里是记录了报错的解决全过程

qq_48717745的博客 990

Redis实战《红丸出品》4.3 Redis高级实用特性之事务控制

---------------------------------------------------------------------------------------------------------------- 《MongoDB管理与开发精要》、《Redis实战》作者 @CD红丸                    http://weibo.com/u/2446082491

红丸的专栏 769

SOC Boot学习(二)——JTAG Debug介绍

JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。

yttt的博客 1605

Redis实战《红丸出品》4.1 Redis高级实用特性之安全性

---------------------------------------------------------------------------------------------------------------- 《MongoDB管理与开发精要》、《Redis实战》作者 @CD红丸                    http://weibo.com/u/2446082491

红丸的专栏 480

【Qt笔记】1.VSCode搭建Qt运行环境

Qt6之后已经抛弃qmake,使用cmake。cmake相对qmake来说只有优点没有缺点。使用VSCode搭建完Qt的运行环境就能开开心心debug了.vscode需要使用的插件:2.Qt tools3.CMakec++插件可以不关注,缺啥都会提醒你.正常安装即可。

没有手牌的博客 2万+

Error: dependent ‘..\..\..\..\Qt\5.15.2\msvc2019\include\QtWidgets\QMainWindow‘ does not exist.

核心问题:修改 Build 目录为源码子目录后,MSVC 编译报错,本质是变量设置异常,导致 qmake 生成多余回溯路径;临时解决:在 .pro 文件添加;最优解决:将上述配置写入 Qt 的 msvc 对应 qmake.conf 全局文件,一劳永逸;禁止 qmake 计算路径时向上回溯,避免生成异常路径。

mumufan05的专栏 878

Redis简介

Redis简介1. 什么是Redis?2. Redis怎么安装?2.1. 下载2.2. 解压&编译2.2.1. 解压2.2.2. 编译2.3. 配置&启动3. Redis高级特性3.1 线程模型3.2 数据持久化3.2.1. AOF日志3.2.1.1. 什么是AOF日志?3.2.1.2. AOF日志怎么存储命令?3.2.1.3. 为什么要重写AOF日志?3.2.1.4. 重写AOF日志的执行机制?RDB快照3.3 缓存淘汰机制 1. 什么是Redis? Redis是一个非关系型-键值对数据库

更新博客 346

2026年GESP3月认证C++五级真题解析

因为要合并成升序数组,所以当A[i]小于等于B[j]时,取A[i],否则取B[j]。当a[i]>a[j]时,左边数组中从i到m的所有元素都大于a[j],因此逆序对数量增加m-i+1。给定一个包含n个互不相同的正整数的数组A与一个包含m个互不相同的正整数的数组B,请你帮忙计算有多少个数在数组A与数组B中均出现。下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写()。且a[i] > a[j],则a[i]和a[j]是一个逆序对。

lan_in的博客 118

Redis实战《红丸出品》1.3 初识Redis

Redis实战《红丸出品》1.3 初识Redis (2012-05-20 17:33) [编辑] [删除] 分类: Redis   ---------------------------------------------------------------------------------------------------------------- 《

红丸的专栏 1386

STM32(HAL库)软件IIC驱动OLED

本文通过STM32F103C8T6单片机(HAL库)通过软件IIC方式对OLED进行驱动。

weixin_44597885的博客 9757

华为OD机考2025B卷 - 报文响应时间(Java & Python& JS & C++ & C )

华为OD机考2025B卷 - 报文响应时间

算法大师! 8083

【Redis】初探Redis

初探Redis

woodwhale的博客 1485

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 953

Redis初探

Redis初探环境配置下载与安装运行服务器运行客户端基本数据类型与操作StringHashListSetSorted Set应用 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sor

weixin_43740283的博客 989

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

初探Redis

key-value存储系统 字符串 SET GET HASH HMSET HGETALL 列表(list) LPUSH LRANGE x m n (m to n) 集合(Set) SADD SMEMBERS 有序集合(sorted set) ZADD key 1 name ZRANGE key 0 10 WITHSCORES 发布订阅 订阅者:redis 127.0.0.1:6379>

Filyss的博客 678

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Redis初探一

Redis已经成为大部分缓存解决方案的首选技术,从大部分IT公司的招聘面试中就可见一斑。现在Redis已经成为广大程序员必备的技术之一。那么,咱们就来针对Redis进行初探来逐步了解它的真正面纱。 Redis是基于内存的key-value内存数据库。

laowang2915的博客 513

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Redis初探总结

Redis redis是最为广泛的存储中间件。是一个速度非常快的非关系内存数据库。 与关系型数据库相比,redis的命令请求不需要经过查询分析器或查询优化器进行处理,也避免了更新数据时引起的随机读写这些慢操作。他直接读写内存中的数据,并且数据是按照一定的数据结构存储的,所以速度会加快。 Redis命令之key操作命令 清楚的当前数据库:flushdb 添加string类型的数据:set (k)...

weixin_43875465的博客 344

Redis初探之Redis初步了解

前言 Redis 是用 C 语言开发的一个开源的高性能**键值对(key-value)**内存数据库。 它提供五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型,是一种 NoSQL 数据库。 应用场景 内存数据库(登录信息、购物车信息、用户浏览记录等) 缓存服务器(商品数据、广告数据等等)(最多使用) 解决分布式集群架构中的 session 分离问题(session共享)...

lks1139230294的博客 338

Redis介绍【初探】

1、Redis是什么?       & Redis是开源的(BSD协议),使用ANSI C编写,基于内存的且支持持久化,高性能的key-value的NoSQL数据库.         详见百度百科:http://baike.baidu.com/link?url=nkRp0Ek_P7WrJ6S7P-92Ny6N8aa4RETuRsPIm1z54AmzCA7o3ijJYMaMnkTsMWMIkWP

_45度仰望星空 482

redis缓存初探

redis缓存初探1 Spring自带缓存从spring3.1开始,spring框架就引入了缓存机制,在spring4.1中又进一步得到了加强。使用自带缓存十分简单,首先在启动类中添加@EnableCaching注解,此注解告诉Spring容器去加载类型为CacheManage的bean,CacheManage是缓存的管理类,然后在方法或类中使用@Cacheable、@CachePut、@Cache

u010145361的专栏 375

Redis安装及hiredis初探

转载请注明出处:https://blog.youkuaiyun.com/mymottoissh/article/details/83001716 前文书介绍过MongoDb的服务端和客户端的安装、配置以及项目中的集成过程。简单来说,MongoDb存储就是写json,而今天的redis是写键值对。本文主要介绍一下redis、安装过程以及C语言驱动的使用 关键字:数据库 Redis hiredis 安装Re...

北极洲的博客 1844

1_Redis初探

目录1 Redis 简介2 Redis 数据结构2.1 STRING(字符串)2.2 LIST(列表)2.3 HASH(散列)2.4 SET(集合)2.5 ZSET(有序集合)3 Redis 与 Memcached3.1 数据类型3.2 数据持久化3.3 分布式3.4 内存管理机制3.5 线程模型 1 Redis 简介 Redis 是一个速度非常快的非关系型数据库(non-relational database)/ NoSQL 数据库; Redis 不使用表,也不会预定义或者强制去要求用户对 Redis

sc179的博客 292
上一篇: ubuntu下安装memcache
下一篇: 二维数组排序
Dark_Passion
博客等级 码龄17年 14粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值