文件缓存tmpfs + 数据缓存SSDB(一)
一、文件缓存tmpfs
1、特性
1) 基于内存的文件系统,RAW+SWAP,虚拟内存
2) tmpfs使用虚拟内存,/dev/shm/使用共享内存
3) 访问速度快,可以动态调整大小
4) 没有持久性,重启后删除
5) 占用的空间不会在内存清理的时候删除(这点注意)
2、应用场景
1) squid或nginx缓存
2) PHP Session
3) 存放socket
4) 自定义缓存
3、文件拷贝到/dev/shm目录中,查看内存的变化
# df -Th
tmpfs tmpfs 912M 0 912M 0% /dev/shm# cp jdk-8u131-linux-x64.gz /dev/shm
# df -Th
tmpfs tmpfs 912M 177M 735M 20% /dev/shm
# free -m
# rm -f /dev/shm/jdk-8u131-linux-x64.gz
# free -m
4、创建文件,并划分为tmpfs文件系统
# mkdir /mnt/data
# mount -t tmpfs tepfs /mnt/data/# df -h
tmpfs 912M 0 912M 0% /mnt/data
5、指定tmpfs文件系统大小为50M
# mkdir /mnt/data1
# mount -t tmpfs -o size=50m tmpfs /mnt/data1
# df -h
tmpfs 50M 0 50M 0% /mnt/data1
6、重新设置tmpfs文件系统大小为100M
# mount -o remount,size=100m /mnt/data
# df -h
tmpfs 100M 0 100M 0% /mnt/data
7、永久生效
# vim /etc/fstab
tempfs /mnt/data tmpfs size=50M 0 0
二、ssdb主从及双主模型配置和简单管理
1、介绍
1、levelDB是key->value数据库,只能本地保存数据,支持持久化,支持保存非常大的数据,官网地址http://leveldb.org
单机redis保存10G数据时,会出现响应慢,单机levelDB,保存150G以内数据,依然保持良好的性能,
随机写入数据,每秒40W条,随机读,每秒6W,适合写入多的场景,不支持网络传输,只能本机访问数据 2、SSDB是levelDB的网络实现,存储大数据比redis更加稳定
官方文档:http://ssdb.io/zh_cn/
安装文档:http://ssdb.io/docs/zh_cn/install.html 3、国内360基于levelDB开发支持网络接口的SSDB,C/C++语言开发高性能NoSQL数据库,
支持KV,list,map(hash),zset(sorted set)等,SSDB支持网络、支持redis客户端、
支持python/java/go/PHP/C++语言、支持持久化、支持主从复制、主主复制和负载均衡等功能
即使有主从,每天也要备份文件目录,备份工具: ssdb-dump
2、ssdb服务的安装和配置
1、安装依赖
# yum install -y jemalloc-devel autoconf 2、下载安装包并编译
# wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
# unzip master.zip
# cd ssdb-master/
# make && make install #默认安装/usr/local/ssdb 3、修改启动脚本
# cp tools/ssdb.sh /etc/init.d/ssdb
# vim /etc/init.d/ssdb
configs="/usr/local/ssdb/ssdb.conf" 4、加入启动项
# chkconfig --add ssdb
# chkconfig ssdb on
# chkconfig --list ssdb 5、配置命令路径
# vim /etc/profile
PATH=$PATH:/usr/local/ssdb
export PATH
# source /etc/profile 6、修改配置文件
# vim /usr/local/ssdb/ssdb.conf
server:
ip: 192.168.3.200
port: 8888 7、启动服务
# /etc/init.d/ssdb start
# ss -tnlp|grep 8888 8、 测试
# ssdb-cli -h 192.168.3.200 -p 8888> set name jack> set age 18> get name

3、配置主从同步

① 从服务器配置
配置主服务器的ID、type、host、port
# vim /usr/local/ssdb/ssdb.conf
replication:
binlog: yes
sync_speed: -1
slaveof:
id: node1 #配置主的id
type: sync #同步方式
host: 192.168.3.200 #主的ip
port: 8888

② 从服务器info信息
ssdb 192.168.3.198:8888> info
version
1.9.4
links
1
total_calls
9
dbsize
0
binlogs
capacity : 20000000
min_seq : 0
max_seq : 4
replication
slaveof 192.168.3.200:8888
id : node1
type : sync
status : SYNC
last_seq : 3
copy_count : 3
sync_count : 0
serv_key_range
kv : "" - ""
hash: "" - ""
zset: "" - ""
list: "" - ""
data_key_range
kv : "address" - "salary"
hash: "" - ""
zset: "" - ""
list: "" - ""
leveldb.stats
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)

③ 主服务器info信息
ssdb 192.168.3.200:8888> info
version
1.9.4
links
1
total_calls
12
dbsize
0
binlogs
capacity : 20000000
min_seq : 0
max_seq : 3
replication
client 192.168.3.198:57714
type : sync
status : SYNC
last_seq : 3
serv_key_range
kv : "" - ""
hash: "" - ""
zset: "" - ""
list: "" - ""
data_key_range
kv : "address" - "name"
hash: "" - ""
zset: "" - ""
list: "" - ""
leveldb.stats
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
4、配置双主同步(主要是高可用)

1、介绍
SSDB数据库支持双主和多主,但当作单主来用,只能单写,将type改为mirror,然后每个节点指向对方 2、node1的配置
# vim /usr/local/ssdb/ssdb.conf
server:
ip: 192.168.3.200
port: 8888 replication:
binlog: yes
sync_speed: -1
slaveof:
id: node2
type: mirror
host: 192.168.3.198
port: 8888 3、node2的配置
# vim /usr/local/ssdb/ssdb.conf
server:
ip: 192.168.3.198
port: 8888 replication:
binlog: yes
sync_speed: -1
slaveof:
id: node1
type: mirror
host: 192.168.3.200
port: 8888 4、node1中的info信息
ssdb 192.168.3.200:8888> info
version
1.9.4
links
1
total_calls
1
dbsize
273
binlogs
capacity : 20000000
min_seq : 1
max_seq : 71
replication
client 192.168.3.198:57724
type : mirror
status : SYNC
last_seq : 71
replication
slaveof 192.168.3.198:8888
id : node2
type : mirror
status : SYNC
last_seq : 68
copy_count : 4
sync_count : 64
serv_key_range
kv : "" - ""
hash: "" - ""
zset: "" - ""
list: "" - ""
data_key_range
kv : "address" - "salary"
hash: "" - ""
zset: "" - ""
list: "" - ""
leveldb.stats
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
0 1 0 0 0 0 5、node2中的info信息
ssdb 192.168.3.198:8888> info
version
1.9.4
links
1
total_calls
6
dbsize
1690
binlogs
capacity : 20000000
min_seq : 1
max_seq : 69
replication
client 192.168.3.200:46991
type : mirror
status : SYNC
last_seq : 69
replication
slaveof 192.168.3.200:8888
id : node1
type : mirror
status : SYNC
last_seq : 72
copy_count : 0
sync_count : 0
serv_key_range
kv : "" - ""
hash: "" - ""
zset: "" - ""
list: "" - ""
data_key_range
kv : "address" - "salary"
hash: "" - ""
zset: "" - ""
list: "" - ""
leveldb.stats
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
0 1 0 0 0 0

5、监控工具的使用
php文件上传到 /var/www/html/phpssdbadmin 目录
1、lnmp架构的方法
# yum -y install php php-mysql nginx php-gd* php-mcrypt
# vim /etc/nginx/nginx.conf
location /phpssdbadmin {
try_files $uri $uri/ /phpssdbadmin/index.php?$args;
}
index index.php;
root /var/www/html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
} 2、lamp架构的方法
# yum install -y httpd php php-gd*
# vim /etc/httpd/conf/httpd.conf #打开rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride All #修改为All
</Directory> <Directory "/var/www/html">
Order allow,deny
Allow from all
AllowOverride All #修改为All
</Directory>
# cat phpssdbadmin/.htaccess #.htaccess内容
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /var/www/html/phpssdbadmin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /phpssdbadmin/index.php [L]
</IfModule> 3、登录

文件缓存tmpfs + 数据缓存SSDB(一)的更多相关文章
- thinkphp的静态缓存,数据缓存,快速缓存,查询缓存
// 静态缓存 // 'HTML_PATH' 缓存目录,这是个常量不是配置项,在入口文件中定义 // 'HTML_CACHE_ON' => true, // 开启静态缓存 'HTM ...
- 我用ASP.NET缓存之数据缓存
[我的理解] Cache,是内置的对象集合.是全局的,类似于static Arraylist.它是线程安全的,添加或修改Cache中的项目时,不需要锁定或者解除Cache. 添加 Cache[Key] ...
- YII缓存之数据缓存
1.开启缓存组件 2. ================ 二 先在配置文件components数组中加上: 'cache'=>array( 'class'=>'CFileCache'), ...
- asp.net 页面缓存、数据缓存
页面缓存,webform框架的aspx页面,服务器引擎生成的页面可以被缓存.
- 数据缓存iOS
有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造成以下问题 (1)用户流量的浪费(2)程序响应速度不够快 解决上 ...
- 玩转iOS开发 - 数据缓存
Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...
- 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)
[名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化( ...
- thinkphp 数据缓存
在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如: 缓存初始化 // 缓存初始化 S(array('type'=>' ...
- jQuery源代码学习之六——jQuery数据缓存Data
一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...
随机推荐
- Oracle之PL/SQL Developer的下载与安装
PL/SQL是什么? PL/SQL Developer是一个集成开发环境(以下简称PL/SQL),专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Proced ...
- Oracle之数据库浅谈
前言 1970年的6月,IBM 公司的研究员埃德加·考特 (Edgar Frank Codd) 在 Communications of ACM 上发表了那篇著名的<大型共享数据库数据的关系模型& ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- 系统整理qt笔记3
qtcreator中不能输入中文: https://blog.csdn.net/qq_15725099/article/details/97305507 main.cpp #include " ...
- https 加密原理
转载于 https://www.cnblogs.com/imteck4713/p/12016313.html 补充: <图解HTTP> 1.引言 随着互联网安全意识的普遍提高,对安全要求稍 ...
- 亿图图示v9.2.0.0 官方中文版及破解激活补丁
介绍 亿图图示是一款由深圳市亿图软件有限公司开发的全类型,综合图形图表设计软件,解决跨平台,多领域,全终端的图形设计,图文混排和工程制图等需求.亿图图示是一款简单易用的快速制图软件,适合任何人绘制任何 ...
- 【数据库】优化SQL语言
第1章数据模型设计 第1条:确保所有表都有主键 [1]当表缺少主键时,会出现各种问题,所有表都必须有一列(或多列)设置为主键. [2]主键应当具备的特征 唯一性,值非空,不可变,尽可能简单 [3]不要 ...
- LGP3953题解
(口胡) 去年刚学 A_star 的时候以为是板子,上午推了一会儿之后受教了 遇到最短路的题先建最短路 DAG,虽然有0边但是先跑一个 Dijkstra. 然后设 \(d[u]\) 是从 \(1\) ...
- LGP5437题解
呃怎么感觉很裸啊( 题意是让求生成树边权之和的期望,那么我们只需要算出所有生成树的边权之和除以生成树边数即可. 由于是求和,我们只需要计算出每条边对答案的贡献即可. 我们知道一个完全图有 \(n^{n ...
- MySQL between and 边界测试
看到有一些博客说 between and 有不含边界的情况,于是测试了一把,记录如下.先说结论:between and 不存在不含边界的情况 1. between and 是包含边界的 id betw ...