一、文件缓存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(一)的更多相关文章

  1. thinkphp的静态缓存,数据缓存,快速缓存,查询缓存

    // 静态缓存 // 'HTML_PATH' 缓存目录,这是个常量不是配置项,在入口文件中定义 // 'HTML_CACHE_ON'     =>    true, // 开启静态缓存 'HTM ...

  2. 我用ASP.NET缓存之数据缓存

    [我的理解] Cache,是内置的对象集合.是全局的,类似于static Arraylist.它是线程安全的,添加或修改Cache中的项目时,不需要锁定或者解除Cache. 添加 Cache[Key] ...

  3. YII缓存之数据缓存

    1.开启缓存组件 2. ================ 二 先在配置文件components数组中加上: 'cache'=>array( 'class'=>'CFileCache'), ...

  4. asp.net 页面缓存、数据缓存

    页面缓存,webform框架的aspx页面,服务器引擎生成的页面可以被缓存.

  5. 数据缓存iOS

    有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造成以下问题 (1)用户流量的浪费(2)程序响应速度不够快 解决上 ...

  6. 玩转iOS开发 - 数据缓存

    Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...

  7. 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)

    [名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化(  ...

  8. thinkphp 数据缓存

    在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如: 缓存初始化 // 缓存初始化 S(array('type'=>' ...

  9. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

随机推荐

  1. 【C# IO 操作 】IFormatProvider接口|IFormattable 接口 格式化接口

    IFormatProvider接口获取一个满足要求的个格式化器. 方法 object? GetFormat(Type? formatType);GetFormat方法主要提供一个满足指定要求的对象,该 ...

  2. WPS:公式在中间,编号靠右

    1.新建表格1*3 2.在中间单元格内输入公式,在右边单元格中输入编号 3.在"开始"菜单栏找到"居中"和"靠右"两个按钮,给中间单元格设置 ...

  3. Chrome:插件安装

    1.首先要下载一油猴插件管理器 得到crx文件 2.打开'扩展程序',在Chrome右上角 3.启动开发者模式(右上角),然后将油猴crx文件拖入界面中,会自动安装油猴 安装完成后,在工具栏中会出现油 ...

  4. 计算机系统4-> 计组与体系结构1 | 基础概念介绍

    在大二上学期学习数字逻辑的过程中,我对计算机如何运作产生了兴趣,因此开了这个系列来记录自己在这方面的学习过程,此前三篇分别是: 计算机系统->Hello World的一生 | 程序如何运行,从大 ...

  5. JZ-009-变态跳台阶

    变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目链接: 变态跳台阶 代码 /** * 标题:变态跳台阶 * 题 ...

  6. 06-CircuitBreaker断路器

    1.介绍 Spring Cloud Circuit breaker provides an abstraction across different circuit breaker implement ...

  7. HarmonyOS UI组件在线预览,程序员直呼“不要太方便~”

    一.介绍 以往大家如果想查看组件的使用效果,需要打开DevEco Studio构建工程.现在为了便于大家高效开发,文档上线了JS UI组件在线预览功能,无需本地构建工程,在线即可修改组件样式等参数.一 ...

  8. OA办公软件篇(一)—组织架构

    OA办公软件篇(一)-组织架构 背景 作用 迭代历程 具体实现 写在最后   背景 在说组织架构之前,我们先来说说OA本身. 百度百科解释OA为:办公自动化(Office Automation,简称O ...

  9. Lua中如何实现类似gdb的断点调试—06断点行号检查与自动修正

    前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功 ...

  10. 2. Java入门

    2.Java入门 2.1.安装开发环境 卸载JDK 删除Java的安装目录 删除JAVA_HOME 删除path下关于Java的目录 java -version 安装JDK 百度搜索JDK8,找到下载 ...