`

Redis数据库基础与应用

阅读更多

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/2250973

 

一、Redis简介

    开源 key-value形式存储 数据结构服务器   与关系型不同之处:sql标准、acid属性、表结构
    特点:非关系型、分布式的、开源的、水平扩展的
    优势:数据高并发读写、海量数据高效率的存储和访问、对数据的高可扩展性和高可用性
 
    支持数据类型:string、hashes、lists、sets、sorted sets
    支持push\pop、add\remove 交\并集、各种不同的排序
    保证效率 数据缓存在内存中,周期性将更新数据写入磁盘或将修改操作写入追加的记录文件[数据快照或记录操作]

 

二、应用场景

    1. 应用架构

        1.1. 应用程序(Application)直接访问Redis
        1.2. 应用程序直接访问Redis,当Redis访问失败时才访问Mysql

    2. 适用场合

        2.1. 取最新N个数据的操作
        2.2. 排行榜应用,取top N 的操作
        2.3. 精确设定过期时间的应用
        2.4. 计数器的应用
        2.5. Uniq操作,获取某段时间所有数据排重值
        2.6. 实时系统,反垃圾系统
        2.7. Pub/Sub构建实时消息系统
        2.8. 构建队列系统
        2.9. 缓存

三、常用命令

    1. 键值相关命令

     expire 设置失效时间 
     select (0-15)选择数据库
     persist key 取消过期时间
     randomkey 随机返回key
     rename 重命名key
     type 返回key的数据类型

    2. 服务器相关命令

     ping 测试连接是否存活
     info 获取服务器信息和统计
     flushall 删除所有数据库中的所有key

完整命令目录:

四、高级应用

    1. 安全性
         设置客户端连接后进行任何其他指令前需要使用的密码
requirepass flyer0126 (redis.conf)
          连接后auth授权或者登录时授权
auth flyer0126   ||   ./src/redis-cli -a flyer0126
 
    2. 主从复制
         特点:master可以拥有多个salve;多个slave可以连接同一个master外,还可以连接到其他的slave;主从复制不会阻塞master,在同步数据时,master可以继续处理client请求;提高系统的伸缩性。
          主从复制过程:
          slave与master建立连接,发送sync同步命令;master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存;后台完成保存后,将文件同步至salve;salve将文件保存到硬盘上。
          配置主从服务器:
          slave服务器上配置(redis.conf):
slaveof  主机ip 端口  #指定主机的ip及端口
masterauth flyer0126 #指定主机密码(权限)
           如何判定主从:info (role)
    3. 事务处理
          对事务的支持比较简单,只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令,当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。
          discard 取消当前事务
          事务里的某一命令执行错误,整个事务不会回滚。
    4. 持久化机制
          snapshotting(快照) 默认  保存数据
          将内存中数据以快照方式写入到二进制文件中,默认的文件名为dump.rdb,可以通过配置设置自动做快照持久化的方式,可以配置redis在n秒内如果超过m个key的修改就自动做快照。
          save 300 10 #300s内如果超过10个key被修改,则发起快照保存。
          由于快照方式是在一定间隔时间做一次的,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。
          Append-only file(aof) 记录操作
          比快照方式有更好的持久化性,使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会通过重新执行文件(appendonly.aof)中保存的写命令来在内存中重建整个数据库内容。
          由于os会在内存中缓存write做的修改,不会立即写到磁盘上,这样aof的持久化还是有可能会丢失部分数据的修改。可以通过配置 通过fsync函数强制os写入磁盘的时机。
appendonly yes //启用aof持久化方式
# appendfsync always // 收到命令就写入磁盘,最慢,但是保证完全的持久化
# appendfsync everysec //每秒写入一次,在性能和持久化方面做了折中
# appendfsync no //完全依赖os,性能最好,持久化没保证
 
    5. 发布订阅(Pub/Sub)消息
          消息通信模式,主要解决消息发布和消息订阅之间的耦合。
          Redis作为pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者通过subscribe命令向redis server订阅自己消息类型,redis将消息类型成为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息时,订阅该消息类型的全部client都会收到此消息。
    6. 虚拟内存的使用
          Redis的虚拟内存与操作系统的虚拟内存不同,但思路和目的相同,暂时将不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。
          对于redis,提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上。
虚拟内存配置
vm-enabled yes                            # 开启vm功能
vm-swap-file /tmp/redis-swap  #交换出来的value保存的文件路径
vm-max-memory 1000000        #redis使用的最大内存上限
vm-page-size 32                           #每个页面的大小32字节
vm-pages 134217728                    #最多使用多少页面
vm-max-threads 4                        #用于执行value对象换入的工作线程数量
           

五、图形化管理

Redis Desktop Manager

一款基于Qt5的跨平台Redis桌面管理软件


 

支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+

特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。

项目地址: https://github.com/uglide/RedisDesktopManager

Redis Client



 

项目简介: 使用Java编写,功能丰富,缺点是性能稍差,网络不好时,会不时断线。

项目地址: https://github.com/caoxinyu/RedisClient

Redis Studio



 

项目简介: 又一个C++编写的redis管理工具,仅支持windows平台,支持xp操作系统。

项目地址: https://github.com/cinience/RedisStudio

 

六、示例项目

    使用PHP利用Redis做数据库实现的示例项目,主要包括:用户登录、退出、添加、编辑、删除、分页、关注、取消关注等功能,主要目的为熟悉Redis各数据类型的应用。

    具体实现代码见附件,为本人简单实现,欢迎拍砖~



  

  • 大小: 23.1 KB
  • 大小: 344.4 KB
  • 大小: 120.8 KB
  • 大小: 35.9 KB
1
3
分享到:
评论

相关推荐

    Redis桌面管理器(又名RDM) - 是一个用于Windows,Linux和MacOS的快速开源Redis数据库管理应用程序。

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和...

    高性能内存数据库Redis(基础篇).pdf

    该PPT主要涉及Redis简介、特性、HA和简单的应用场景等四块内容,整体上了解Redis的基础知识,适合入门读者了解Redis。

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    《Redis 6 开发与实战》教学配套PPT.rar

    内容概要:《Redis 6 开发与实战》配套PPT包括了从初识Redis到高级主题、缓存设计与优化、集群部署、开发实战等多个章节,涵盖了Redis的基础知识、常用命令、高级主题以及与Spring Boot整合等内容...

    redis基础.doc

    redis 是一种基于键值对(key-value)数据库,其中 value 可以为 string、hash、list、 set、zset 等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务, 流水线,等附加功能, 流水线: Redis 的...

    redis相关基础知识入门

    在基于Web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像Web服务器和应用服务器那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。...

    redis-基础知识介绍

    Redis是一个开源的使用ANSI C语言编写,支持网络,基于内存亦可持久化,分布式的key-value数据库,并提供多种语言的API 。从2010年3月15日起,Redis的开发工作由VMware主持。特点是高性能,持久存储,适应高并发的...

    实验四:NoSQL和关系数据库的操作比较

    (1)理解4种数据库(MySQL、HBase,Redis和 MongoDB)的概念及不同点。(2)熟练使用4种数据库操作常用的 Shell命令。 (3)熟悉4种数据库操作常用的Java API。 A.4.2实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2...

    NoSQL数据库技术实战

    Amazon的高可用键值对存储、LevelDb——出自Google的Key-Value数据库、Redis实战、面向文档的数据库CouchDB、MongoDB实战、MySQL基础、MySQL高级特性与性能优化。 本书涉及面广,从基本操作到高级技术和核心原理,再...

    SpringBoot2.X整合redis连接lettuce增强版本,支持多数据库切换,主从集群,哨兵

    该项目的主要目标是在`SpringBoot`应用中集成`Lettuce`作为Redis客户端,实现对Redis的高效访问和操作。同时,通过自定义配置和注入不同的`RedisTemplate`实例,可以轻松实现多库切换,满足不同场景下的需求。 2. **...

    Redis缓存架构实战-基于社区电商场景(资料+视频教程)

    本资源提供了一套针对社区...注意理解Redis与其他系统的集成方式,如数据库、消息队列等。 通过本资源的学习,你将能够深入理解Redis缓存架构,并掌握如何将其应用于社区电商等复杂业务场景,提升系统性能和稳定性。

    Redis的.net客户端StackExchange.Redis.zip

    Redis是一个开源的内存数据存储,可以用来做数据库,缓存或者消息代理服务。目前有不少人在使用 ServiceStack.Redis这个.net客户端,但是这个的最新版本目前已经变成了商业软件。对于 ServiceStack.Redis这种行为,我们...

    什么是NoSQL数据库?

    科德所提出的关系数据模型的概念成为了现今关系型数据库的基础。当时的关系型数据库由于硬件性能低劣、处理速度过慢而迟迟没有得到实际应用。但之后随着硬件性能的提升,加之使用简单、性能优越等优点,关系型数据库...

    可能是目前最详细的Redis内存模型及应用解读

    Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合)...

    redis windows(含32/64位 )v2.4.5官方版.zip

    Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。 redis windows基本简介 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value...

    DFT的matlab源代码-redis_orm:对象关系映射使用redis作为关系数据库

    项目的快速迭代,不仅需要敏捷的开发,还需具备较高性能的和稳定性,单纯用关系型数据库有瓶颈,然后在关系型数据库基础上加分布式缓存或者进程内缓存有增加了开发和维护成本, 刚好项目中在用Redis,就考虑基于...

    系统设计、分布式、数据库(MySQL、Redis)、Java 项目实战等.zip

    【Java面试+Java后端技术学习指南】:一份通向理想互联网公司的面试指南,包括 Java,技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、分布式、数据库(MySQL、Redis)、Java 项目实战等 ...

    基于python+SpringBoot+Mybatis+velocity仿知乎开发的sns+资讯web应用+redis+mysq

    基于python+SpringBoot+Mybatis+velocity仿知乎开发的sns+资讯web应用+redis+mysq,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 仿照知乎做的一个...

    App42PaaS-Node-Redis-Sample:用于 App42 PaaS 平台的带有 Redis 的示例节点应用程序

    App42 为所需环境设置基础设施创建服务部署 Node 应用程序为所需环境设置基础设施 $ app42 setupInfra 创建服务 $ app42 createService数据库配置(application_root_dir/app.js) client = redis.createClient(,"VM...

    DBA MySQL数据库工程师(2021版)视频教程

    第3章 SQL语句基础应用 第4章 索引的基本管理 第5章 存储引擎 第6章 日志管理 第7章 备份恢复 第8章 主从复制基础 第9章 主从复制高级进阶 第10章 MyCAT中间件实战 第11章 MySQL优化 第12章 MySQL附录篇 第13章 ...

Global site tag (gtag.js) - Google Analytics