全内存的redis用习惯了

必赢365net手机版 2

 

         
 首先说一下背景,在双十后生可畏的时候,大家系统选择X宝的订单推送,同事本来的落到实处方式是应用redis的List作为推送数据的承先启后,在非大促的光景下,

一切运转寻常,内存占用大致3-4G,机器是16G内存。由于提前预测不足,在双十风流倜傥到来的时候,订单须臾时量达到了日常的10X倍,内部存款和储蓄器非常吃紧,景况算

是不行殷切了,接受的权且解决方案便是再开四个redis,将次第中的redis地址指向那台新的,重启一下顺序,把数据近日指点过去。

 

一:分析

       
 redis确实是二个好东西,一个如此有力的内部存款和储蓄器数据布局服务器,全内部存款和储蓄器存款和储蓄,有些场景,正巧你会死在全内部存款和储蓄器上,并且相对ssd硬盘来说,内部存款和储蓄器如故

太小了。内部存款和储蓄器很有益,可是内部存款和储蓄器和ssd比起来很贵,並且有个别场景你只怕平素没有必要接纳全内部存款和储蓄器,使用硬盘大概会更能帮忙我们节省花费,你只怕会说,现

在产业界标准已经大约是kafka了,有时候我们还必要redis里面的hash,也正是说小编以往内需kafka

  • redis 的叁个综合体的制品,这正是本篇和咱们谈起的

ssdb,当然ssdb和kafka依旧不可能并重的哈,毕竟本人是在选取贰个轻量级的消除方案。

 

二:ssdb说明

        ssdb是二个运用leveldb做为底层存款和储蓄的nosql数据库,好处就是能够动用redis中的全数数据构造,何况数量照旧基于硬盘的,所以能够储存的数额比

redis大的并非太多,官方文档的传教就是用来代替redis的,何况令你日前意气风发亮的正是,它对.net还是比较协和的,四个特别不利的消除方案,可是成熟度不

如redis,大家早先时代可以当缓存用用,大概存款和储蓄一些非关键性数据,节省节省外部存款和储蓄器空间。近期本身在品种中用起来了。

  1. 必赢365net手机版,应用hash来存customerID
    和customer尼克的映射关系。

  2. 运用List来承载X宝的订单推送。

 

三:飞速搭建

      官方下载: 有好几要小心的正是合乌Crane语档显然表示,CentOS7的文书句柄设置难点,提议实际不是在centos7上举办搭建,具体的求证

能够看看那个:http://ssdb.io/docs/zh_cn/config.html
,我们能够用用centos6.5要么ubantu吧。

 

  1. wget下载和unzip解压。

    [root@localhost apps]# wget

    –2017-12-02 03:02:18–

    Resolving codeload.github.com (codeload.github.com)… 192.30.255.120, 192.30.255.121

    Connecting to codeload.github.com (codeload.github.com)|192.30.255.120|:443… connected.

    HTTP request sent, awaiting response… 200 OK

    Length: 1595060 (1.5M) [application/zip]

    Saving to: ‘master’

100%[==================================================================>] 1,595,060 69.3KB/s in 36s


2017-12-02 03:02:57 (43.7 KB/s) - ‘master’ saved [1595060/1595060]

[root@localhost apps]#unzip master

[root@localhost apps]# ls

master ssdb-master

 

 2. 应用make对C++代码进行编写翻译

[root@localhost ssdb-master]# make

 

3.
编写翻译完之后,黄金时代泡尿的功力,那些ssdb-server可实施文书就出来了。

[root@localhost ssdb-master]# ls
api              ChangeLog  Dockerfile  Makefile   ssdb.conf        tools      version
build_config.mk  data       docs        README.md  ssdb-server      var
build.sh         deps       LICENSE     src        ssdb_slave.conf  var_slave

 

4.然后大家把ssdb.conf配置一下

    这中间有多少个构造要细心下:

<1> work_dir:
寄放data和meta的目录,能够在ssdb-master文件夹下mkdir data文件夹。

<2>
ip:设为0.0.0.0,让具有的主机都能够接连上来。

<3> port  8888
:这几个是暗中同意的ssdbserver端口号,大家能够看景况改良。

全部配置如下:

# ssdb-server config
# MUST indent by TAB!

# absolute path, or relative to path of this file, directory must exists
work_dir = /usr/apps/ssdb-master/data
pidfile = ./var/ssdb.pid

server:
        ip: 0.0.0.0
        port: 8888
        # bind to public ip
        #ip: 0.0.0.0
        # format: allow|deny: all|ip_prefix
        # multiple allows or denys is supported
        #deny: all
        #allow: 127.0.0.1
        #allow: 192.168
        # auth password must be at least 32 characters
        #auth: very-strong-password
        #readonly: yes
        # in ms, to log slowlog with WARN level
        #slowlog_timeout: 5

replication:
        binlog: yes
        # Limit sync speed to *MB/s, -1: no limit
        sync_speed: -1
        slaveof:
                # to identify a master even if it moved(ip, port changed)
                # if set to empty or not defined, ip:port will be used.
                #id: svc_2
                # sync|mirror, default is sync
                #type: sync
                #host: localhost
                #port: 8889

logger:
        level: debug
        output: log.txt
        rotate:
                size: 1000000000

leveldb:
        # in MB
        cache_size: 500
        # in MB
        write_buffer_size: 64
        # in MB/s
        compaction_speed: 1000
        # yes|no
        compression: yes

 

 5. 运维ssdb-server,内定一下构造文件,采纳静默运营

[root@localhost ssdb-master]# ./ssdb-server ./ssdb.conf -d
ssdb-server 1.9.6
Copyright (c) 2012-2015 ssdb.io

[root@localhost ssdb-master]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1869/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1115/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1117/cupsd          
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      12994/./ssdb-server 
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1627/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1115/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1117/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1627/master         
[root@localhost ssdb-master]# 

 

  能够见到,上边的8888端口已经打响开启,没毛病。

 

四:使用C#客户端

       
在地方列出了豆蔻梢头一语言的客商端SDK,这里本人就接纳C#的SDK:。

必赢365net手机版 1

 

     
可以看来,里面没啥东西,就多少个破文件,里面并不曾兑现ssdb应该有个别拥有机能,所以大家可以依附本人的需求进行李包裹装,连接池啥的都要

你和煦依据需求贯彻啊,好了,接下去自个儿用hash简单的测量检验一下:

    class Program
    {
        static void Main(string[] args)
        {
            Client client = new Client("192.168.23.153", 8888);

            client.hset("customerHash", "customerID", "1000");

            string val = string.Empty;

            client.hget("customerHash", "customerID", out val);

            Debug.WriteLine("customerID= " + val);

            client.close();
        }
    }

必赢365net手机版 2

 

    好了,本篇先就说起此处,希望对您有帮忙。

Leave a Comment.