内存数据库

怎样在多台Web服务器上共享Session

廉价感情. 提交于 2020-03-01 15:43:52
在多台web服务器上共享session的问题,我们可以举一些案例来说明。比如:现在有三台php服务器,且实现了负载均衡,如何让这三台web服务器共享session数据? session数据默认是以文件的形式保存在web服务器的磁盘上,一般都是用户登录成功的时候,保存session数据。 同一个用户登录后,就会将session保存在某个web服务器上,假设是保存在服务器A上,该用户访问网站的其他页面时,可能请求的就是服务器B或服务器C,但服务器B或服务器C上并没有该用户的session文件,这样,就会导致网站误认为该用户未登录,用户的登录状态丢失的问题。 归根结底,就是要解决多台web服务器共享session的问题,尚学堂陈老师为我们简要总结了三种方法: 一、将本该保存在web服务器磁盘上的session数据保存到cookie中 即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。 但这样做,有三大弊端: 把session数据放到客户端的cookie中,一般都是重要数据(如用户id、昵称等),会存在安全问题

在Spring Boot中使用内存数据库

Deadly 提交于 2020-03-01 10:19:17
文章目录 H2数据库 HSQLDB Apache Derby SQLite 在Spring Boot中使用内存数据库 所谓内存数据库就是可以在内存中运行的数据库,不需要将数据存储在文件系统中,但是相对于普通的数据库而言,内存数据库因为数据都在内存中,所以内存的数据库的存取速度会更快。 本文我们将会讨论如何在Spring Boot中使用内存数据库。 H2数据库 H2是一个由java实现的开源内存数据库,它可以支持内存模式和独立模式。 如果要使用H2数据库,需要添加如下依赖: < dependency > < groupId > com.h2database </ groupId > < artifactId > h2 </ artifactId > < version > 1.4.194 </ version > </ dependency > 我们可以在配置文件中设置更多的H2数据库的连接信息: driverClassName=org.h2.Driver url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 username=sa password=sa 默认情况下H2数据库当没有连接的时候会自动关闭,我们可以通过添加DB_CLOSE_DELAY=-1来禁止掉这个功能。 如果我们需要使用Hibernate, 我们需要设置如下内容: hibernate

内存数据库专题-4

倾然丶 夕夏残阳落幕 提交于 2020-02-14 06:11:05
------------内存数据库专题--------------- 为什么要把数据存入内存? 快 常见的内存数据库: MemCached:看成Redis前身,严格来说,MemCached不能叫数据库,只能叫缓存 不支持持久化。如果内存停电,数据丢失。 Redis:内存数据库,支持持久化,支持HA Oracle TimesTen session一致性 MemCached + keepalive实现 一、Memcached 1、基本原理和体系架构 (*)在内存中,维护了一张巨大的Hash表 (*)通过路由算法来决定数据存储的位置。---> 客户端路由 2、安装配置MemCached 前提: (1)gcc编译器 (2)libevent库 776 tar -zxvf libevent-2.0.21-stable.tar.gz 777 cd libevent-2.0.21-stable 779 ./configure --prefix=/usr/local/libevent 780 make 781 make install 787 tar -zxvf memcached-1.4.25.tar.gz 788 cd memcached-1.4.25 791 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local

六、RDB 持久化

妖精的绣舞 提交于 2020-02-12 21:11:53
Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。   由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。   为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file)。本篇博客先对 RDB 快照进行介绍。 回到顶部 1、RDB 简介   RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 回到顶部 2、触发方式   RDB 有两种触发方式

ProxySQL 基础篇

左心房为你撑大大i 提交于 2020-02-10 16:09:03
1、ProxySQL 介绍 ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层, 可以实现 读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 介绍:相关 ProxySQL 的网站 https://www.proxysql.com/ https://github.com/sysown/proxysql/wiki    2、环境准备 全新初始化的实例 IP server-id 数据库版本 备注 10.0.0.160 1603306 MySQL 8.0.18 Master(主库)+ ProxySQL2.0.8 10.0.0.161 1613306 MySQL 8.0.18 Slave1(从库) 10.0.0.162 1623306 MySQL 8.0.18 Slave2(从库) ProxySQL 2.0.x 版本支持 MGR 注: 我的 ProxySQL 和 主库放在一起的,我已近配置好了主从复制状态 。这是我的实验环境,实际环境注意实际情况。一般的代理环境结构如上图。 slave 节点的read_only=1 3、ProxySQL 安装与启动 下载 wget https://github.com/sysown/proxysql

Redis详解(一)——RDB

家住魔仙堡 提交于 2020-02-01 16:51:57
Redis详解(一)——RDB 前言 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。   为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file)。本篇博客先对 RDB 快照进行介绍。 1、RDB 简介   RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 2、触发方式   RDB 有两种触发方式,分别是自动触发和手动触发。 ①、自动触发   在 redis.conf 配置文件中    ①、save: 这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave(这个命令下面会介绍

SQLite学习手册(内存数据库)

旧时模样 提交于 2020-01-12 17:27:36
一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: rc = sqlite3_open(" :memory: ", &db); 在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。由于没有持久化,该数据库在当前数据库连接被关闭后就会立刻消失。需要注意的是,尽管多个数据库连接都可以通过上面的方法创建内存数据库,然而它们却是不同的数据库,相互之间没有任何关系。事实上,我们也可以通过Attach命令将内存数据库像其他普通数据库一样,附加到当前的连接中,如: ATTACH DATABASE ' :memory: ' AS aux1; 二、临时数据库: 在调用sqlite3_open()函数或执行ATTACH命令时,如果数据库文件参数传的是空字符串,那么一个新的临时文件将被创建作为临时数据库的底层文件,如: rc = sqlite3_open("", &db); 或 ATTACH DATABASE '' AS aux2; 和内存数据库非常相似,两个数据库连接创建的临时数据库也是各自独立的,在连接关闭后,临时数据库将自动消失,其底层文件也将被自动删除。

memcached内存数据库——部署及操作

此生再无相见时 提交于 2020-01-08 01:56:53
概述  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 特点 1、协议简单; 2、基于libevent的事件处理; 3、内置内存存储方式; 4、memcached不互相通信的分布式。 存储方式 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 实验环境 memcached服务器 192.168.13.128 (memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz) memcache客户端 192.168.13.129 (memcache-2.2.7.tgz 、LAMP) 1,部署memcached服务器 [root

timesten内存数据同步创建

时间秒杀一切 提交于 2020-01-07 16:48:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,在oracle里建表并分配权限 CREATE TABLE UADPT_TAC_OCT ( TAC VARCHAR2(50) NOT NULL, TERMINAL VARCHAR2(50), BRAND VARCHAR2(50), MODEL VARCHAR2(50), CM_TYPE VARCHAR2(50), CONSTRAINT PK_UADPT_TAC_OCT PRIMARY KEY (TAC) ) 2,在oracle里分配权限 GRANT SELECT ON UADPT_TAC_OCT TO cacheadmin; GRANT INSERT ON UADPT_TAC_OCT TO cacheadmin; GRANT UPDATE ON UADPT_TAC_OCT TO cacheadmin; GRANT DELETE ON UADPT_TAC_OCT TO cacheadmin; 3,停止replication agent ttAdmin -repStop 4,执行SQL CREATE ASYNCHRONOUS WRITETHROUGH cache group cache_tac_oct FROM UADPT_TAC_OCT ( TAC VARCHAR2(50) NOT NULL, TERMINAL

TT 安装 之 LINUX

回眸只為那壹抹淺笑 提交于 2019-12-30 06:28:59
# useradd ttadmin -- 创建用户 # groupadd ttadmin -- 创建用户组 # mkdir /etc/TimesTen -- 创建目录 # chgrp -R ttadmin /etc/TimesTen 最好是:  chown -R ttadmin:ttadmin /etc/TimesTen # chmod 770 /etc/TimesTen/ 上传文件到 /etc/TimesTen/ # chown -R ttadmin:ttadmin /etc/TimesTen/ # chmod 660 /etc/TimesTen/* #tar -xzvf 文件名.cpio.gz 这样文件就解压成为 "文件名.cpio" 了,然后再对它进行cpio操作 unzip *.zip (注:tar -xzvf  也可以直接解决tar.gz 类型) $ vi ~/.bash_profile export TT_HOME=/home/ttadmin/TimesTen/tt1122 export PATH=$TT_HOME/bin:$ORA_CRS_HOME/bin:$PATH:$HOME/bin umask 022 stty erase ^? stty erase ^H 设置让.bash_profile 生效 $ source .bash_profile ./setup.sh