iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis内存数据库
  • 881
分享到

redis内存数据库

2024-04-02 19:04:59 881人浏览 泡泡鱼
摘要

===> Redis内存数据库简介:             &nbs

===> Redis内存数据库简介:

                 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库


===> Redis 的特点:

            ->基于内存

    -> 持久化: RDB、AOF

            -> 消息机制:支持String,只支持Topic的消息(广播)  

            -> 丰富的数据类型

            -> 支持简单的事务

            -> 支持主从复制

            -> HA(哨兵): 对版本有要求,需要 2.4 版本以上


===> Redis的安装和配置: 需要gcc的编译器

            -> Redis 单机部署:

        tar -zxvf redis-3.0.5.tar.gz        
        make
        make PREFIX=/app/redis install

            -> Redis的相关命令

                    redis-benchmark       提供的一个压力测试工具,模拟:10万操作

                    redis-check-aof       检查AOF日志文件

                    redis-check-dump      检查RDB快照文件

                    redis-cli                     命令行

                    redis-sentinel        哨兵(Redis的HA) -----> 配置文件:sentinel.conf 2.4版本以上

                    redis-server      服务器

            -> 配置文件   

                    --- redis.conf

                            daemonize yes  改成yes 后,启动后会在后台运行

                            port 6379

            -> 服务启动命令:redis-server conf/redis.conf

            -> 客户端连接命令: redis-cli -p 6379  |  redis-cli  -h 192.168.10.210 -p 6379


===> Redis 集群的安装和配置:(星型架构,线型架构)

            -> 此处只讲解星型架构(此架构结构为单台服务器上使用不同端口启动三个服务组成集群,多台服务器同理)

                --- 主:6379端口               (关闭 RDB 和 AOF)

                --- 从:6380, 6381端口  (开启 RDB 和 AOF)

            -> 配置文件:

	    redis6379.conf
		daemonize yes
		#save 900 1
		#save 300 10
		#save 60 10000
				
		pidfile /app/redis/pids/redis_6379.pid
		logfile "/app/redis/logs/redis_6379/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6379"
		    
		appendonly no
		appendfilename "appendonly6379.aof"
				
	    redis6380.conf
		port 6380
		slaveof 192.168.157.11 6380
		    
		pidfile /app/redis/pids/redis_6380.pid
		logfile "/app/redis/logs/redis_6380/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6380"
		    
		appendonly yes
		appendfilename "appendonly6380.aof"
				
	    redis6381.conf
		port 6381

		slaveof 192.168.157.11 6379
		pidfile /app/redis/pids/redis_6381.pid
		logfile "/app/redis/logs/redis_6381/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6381"
		    
		appendonly yes
		appendfilename "appendonly6381.aof"		

                 (*)注意:默认:从节点只读

		(error) READONLY You can't write against a read only slave.
		修改参数:
		slave-read-only yes


            -> Redis的HA:哨兵机制(要在解压的安装包中copy sentinel.conf 文件到 /conf 目录下)

      sentinel monitor mymaster  192.168.10.210  6379  1
      #                              IP            端口   哨兵个数
      sentinel auth-pass  <master-name>  <passWord>
      # 配置连接主节点的密码
      sentinel down-after-milliseconds  mymaster  30000
      # 表示 30 秒内如果没有收到主节点的心跳,哨兵就认为主节点down
      sentinel  parallel-syncs  mymaster 1
      # 选举出新的主节点后,可以同时连接其他从节点的个数
      sentinel  failover-timeout  mymaster  180000
      # 失败切换时,允许的最大时间

                    ---哨兵启动命令:redis-sentinel sentinel.conf

            -> Redis的分片:

                    ---Twemproxy 是一种代理分片机制, 由 Twitter 开源

                        Twemproxy 作为代理,可接受来自多个程序 的访问,按照路由规则,转发给后台的各个 Redis 服务器, 再原路返回

                    --- 安装Twemproxy

       git clone https://GitHub.com/twitter/twemproxy.git
       cd twemproxy/
       
       CFLAGS="-ggdb3 -O0" autoreconf -fvi && ./configure --prefix=/app/proxy --enable-debug=log && make &&  make install



                    --- 配置文件:nutcracker.yml  (需要在解压的安装包/conf 目录下copy 到安装目录的 conf 目录下)

       alpha:
       listen: 127.0.0.1:22121
       hash: fnvla_64
       distribution: ketama
         auto_eject_hosts: true
         redis: true
         server_retry_timeout: 2000
         server_failure_limit: 1
         servers:
         - 192.168.10.210:6380
         - 192.168.10.210:6381

                    --- 检查配置文件是否正确:  ./nutcracker  -t  conf/nutcracker.yml

                    --- 启动代理服务器: ./nutcracker -d -c  conf/nutcracker.yml

                    --- 此时连接Redis 需要使用 Twemproxy 配置的端口连接: redis-cli  -p  22121

===> Redis的操作:基于key-value形式 

            -> 

                    --- 

===> Redis的事务: 不是真正的事务

            -> Redis的事务的本质:将一组操作放入队列中,批量执行

            -> 对比Oracle和Redis的事务

                 redis内存数据库

            -> Redis 的事务实例:(银行转账)

      set tom 1000
      set mike 1000
      multi
      decrby tom 100
      incrby mike 100
      exec


===> Redis的锁机制

            -> 核心:当事务提交的时候,如果监控的值,发生变化,则提交失败

         命令:watch

            -> Redis 的锁实例:(买票

      set ticket 1        
      set tom 1000
          
      用户一:tom
      multi
      decr ticket
      decrby tom 100
      exec  -------> 提交的时候,慢了一点
          
      1) (integer) -1   ====> 票数不可能是-1
      2) (integer) 900
          
      用户二:在tom提交前,已经把票买走了  
      decr ticket


===> Redis的消息机制

            -> Redis 消息系统类型

                    --- 同步消息系统:需要对方的回答

                    --- 异步消息系统:不需要等待对方回答

            -> Redis 消息类型

                    --- Queue: 队列(点对对)

                    --- Topic: 主题 (广播)

                    (*)Redis和Kafka:只支持Topic

                    (*)  JMS: Java Message Service ----> 都支持:Queue和Topic

 推荐:Weblogic


            -> Redis 消息相关命令

                    publish: 发布消息 指定频道

                    subscribe:订阅消息 指定频道

                    psubscribe:订阅消息 使用通配符指定频道



===> Redis的持久化:  RDB、AOF

            -> 持久化作用:进行恢复

            -> RDB:快照的方式。每隔一段时间,把内存中的数据写到rdb文件中

                    --- 优点:恢复的速度快

                    --- 缺点:如果在两次RDB之间发生了掉电,数据肯定丢失

                    --- 参数:

                            规则:从下往上

                            save 900 1      在15分钟内,如果有1个key的value发生了变化,就产生RDB文件

                            save 300 10     在5分钟内,如果有10个key的value发生了变化,就产生RDB文件

                            save 60 10000   在60秒内,如果有1w个key的value发生了变化,就产生RDB文件

                            

                            stop-writes-on-bgsave-error yes 如果在写RDB文件的时候产生了错误,停止新的数据写入

                            rdbcompression yes 是否压缩(优点:节约了空间  缺点:恢复的效率低),可以设置为:no

                            rdbchecksum yes  校验和来检查RDB文件是否是好的

                            dbfilename dump.rdb  如果在集群下,一台主机上运行多个Redis的实例,建议区别rdb文件

                            dir ./    保存的目录



            -> AOF:append only file(记录日志)

                    --- 优点:数据安全性高

                    --- 缺点:恢复速度慢,需要重做日志,达到恢复的目的

                    --- 默认禁用

                    --- 参数:

        appendonly no  ===> yes     #开启AOF                
        appendfilename "appendonly.aof"  # 如果在集群下,一台主机上运行多个Redis的实例,建议区别aof文件
                  
        # 什么时候记录日志???
        # appendfsync always  # 每个操作都记录日志。最安全,性能最差
        appendfsync everysec  # 默认:每秒
        # appendfsync no      # 由操作系统决定
        no-appendfsync-on-rewrite no # 重写发生的时候,是否写入aof的新日志
        # 什么时候执行AOF重写?
        auto-aof-rewrite-percentage 100
        auto-aof-rewrite-min-size 64mb
                			
		# 什么是AOF的重写:rewrite
		set i 0
		incr i
		incr i
								======> 问题: AOF文件太大了
		100次
		****
		incr i

		最终:i = 100
				
		# 演示:AOF的重写
		模拟:10万个操作
		bin/redis-benchmark -n 100000			

===> Redis 问题链接:(找了几个比较经典的问题处理链接,留作收藏,以后备用


            -> Http://blog.sina.com.cn/s/blog_a1e9c7910102vmx5.html

            -> http://blog.csdn.net/a491857321/article/details/52006376

您可能感兴趣的文档:

--结束END--

本文标题: redis内存数据库

本文链接: https://www.lsjlt.com/news/42276.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis算不算是内存数据库
    小编给大家分享一下redis算不算是内存数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis的所有数据是放在内存中,是...
    99+
    2024-04-02
  • Redis内存数据库示例分析
    目录redies dict字典Redis的DB实现具体的实现器Redis持久化Aofredies dict字典 这是 Redis 最底层的结构,比如 1个DB 下面有 16个Dict...
    99+
    2022-12-19
    Redis内存数据库 Redis数据库
  • redis是什么类型的内存数据库
    redis 是一种基于内存的开源数据库,使用键值存储模型,具有极高的读写速度。其特性包括:内存存储:数据存储在内存中,而不是磁盘上。键值存储:数据以键值对形式存储,其中键是唯一标识符,值...
    99+
    2024-04-08
  • Redis内存数据库分片的示例分析
    这篇文章将为大家详细讲解有关Redis内存数据库分片的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 软件下载地址 ·  &...
    99+
    2024-04-02
  • redis是缓存数据库吗
    是,redis是一个缓存数据库。redis(remote dictionary server)是一种键值存储数据库,专门用于快速访问和存储数据,并具有高性能、低延迟、可扩展性和持久性。 ...
    99+
    2024-04-20
    redis
  • Go重写Redis中间件 - Go实现内存数据库
    GO实现内存数据库 前面我们实现了一个简单的回发Redis,这里我们要实现一个真正的Redis内核 实现底层Dict数据结构 新建一个datastruct文件夹,放一些我们要用的数据结构,比如Redis的核心起始就是一个map,再新建一个包...
    99+
    2023-09-16
    数据库 redis 中间件
  • 内存型数据库Redis持久化的示例分析
    这篇文章主要为大家展示了“内存型数据库Redis持久化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“内存型数据库Redis持久化的示例分析”这篇文章吧...
    99+
    2024-04-02
  • redis是什么存储数据库
    redis 是一种基于内存的键值存储数据库,以其高性能、低延迟和多种数据结构的支持而著称。优点:高性能和低延迟多种数据结构支持高可用性和可扩展性缺点:内存消耗高数据持久性有限 Redi...
    99+
    2024-04-19
    redis
  • 内存数据库如何发挥内存优势?
    与以磁盘存储为主的普通数据库相比,内存数据库的数据访问速度可以高出几个数量级,能大幅提高运算性能,更适合高并发、低延时的业务场景。 不过,当前大部分内存数据库仍然采用 SQL 模型,而 SQL 缺乏一...
    99+
    2023-09-05
    数据库 大数据 java
  • node.js如何使用redis数据库缓存数据
    这篇文章将为大家详细讲解有关node.js如何使用redis数据库缓存数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、运行redisRedis服务器默认使用6379...
    99+
    2024-04-02
  • redis怎么缓存整个数据库
    要将整个数据库缓存到Redis中,可以使用Redis的持久化机制。Redis提供了两种持久化方法:RDB(Redis Databas...
    99+
    2023-08-23
    redis 数据库
  • 高性能内存数据库Redis的免费工具有哪些
    这篇“高性能内存数据库Redis的免费工具有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • Redis缓存数据库的数据类型和优点
    这篇文章主要讲解了“Redis缓存数据库的数据类型和优点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis缓存数据库的数据类型和优点”吧!已经有了Me...
    99+
    2024-04-02
  • redis缓存和redis数据库是一个东西吗
    相同点:基于redis内存数据库,支持多种数据结构。不同点:目的:缓存用于存储常用数据,减少延迟;数据库用于存储持久性数据。持久性:缓存不提供持久性,数据库支持持久化。特性:数据库支持主...
    99+
    2024-04-19
    redis
  • Python如何操作Redis缓存数据库
    本篇内容主要讲解“Python如何操作Redis缓存数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何操作Redis缓存数据库”吧!今天我们来学习如何使用Python操作Red...
    99+
    2023-06-02
  • redis怎么存储结构化数据库
    Redis是一个键值存储系统,它并不是一个结构化数据库,但是可以使用一些技巧来存储结构化数据。1. 使用Hash数据结构:可以将结构...
    99+
    2023-09-05
    redis 数据库
  • 怎么将redis存入到数据库中
    要将Redis存储到数据库中,您可以使用Redis的持久化功能将数据保存到磁盘上。Redis提供了两种持久化方式:RDB和AOF。1...
    99+
    2023-08-30
    redis 数据库
  • 如何在redis数据库中查找key在内存中的位置
    这篇文章主要介绍“如何在redis数据库中查找key在内存中的位置”,在日常操作中,相信很多人在如何在redis数据库中查找key在内存中的位置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 如何查看redis数据占用的内存
    这篇文章主要介绍如何查看redis数据占用的内存,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体查看步骤如下:redis-cli auth 密码info# Memoryused_m...
    99+
    2024-04-02
  • golang内存数据库怎么实现
    在Golang中实现一个内存数据库可以通过以下步骤: 定义数据库结构:首先,你需要确定数据库的结构,即定义每个表的字段以及数据类型...
    99+
    2023-10-23
    golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作