zoukankan      html  css  js  c++  java
  • linux 安装 redis

    Redis Linux 安装


    由于 Redis 并没有发布 windows 的官方版本,windows 的安装使用不作介绍,只介绍 Linux 下的安装使用。 下载地址:https://github.com/dmajkic/redis/downloads 下载最新版本

    然后tar, make,即可。(make前,如果确认自己的测试机是32位linux,在src/Makefile文件中的头部加上CFLAGS= -march=i686

    redis 2.8.9 安装报错

    Jimmy 2013-01-21 11:53
    zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
    zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
    make[1]: *** [adlist.o] Error 1
    make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
    make: *** [all] Error 2
    解决办法是:
    make MALLOC=libc
    zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
     #include <jemalloc/jemalloc.h>
                                   ^
    compilation terminated.
    make: *** [adlist.o] Error 1

    解决办法还是:
    make MALLOC=libc

    启动 server: 根目录下执行 nohup src/redis-server redis.conf &

    如果端口有冲突改下 redis.conf 里面的 port 配置

    启动客户端 src/redis-cli 端口有变化 src/redis-cli -p 6479

    测试下

    redis 127.0.0.1:6479> set test test
    OK
    redis 127.0.0.1:6479> get test
    "test"

      与你熟悉的关系型数据库一致,Redis有着相同的数据库基本概念,即一个数据库包含一组数据。

      典型的数据库应用案例是,将一个程序的所有数据组织起来,使之与另一个程序的数据保持独立。 在Redis里,数据库简单的使用一个数字编号来进行辨认,默认数据库的数字编号是0。如果你想切换到一个不同的数据库,你可以使用select命令来实现。在命令行界面里键入select 1,Redis应该会回复一条OK的信息,然后命令行界面里的提示符会变成类似redis 127.0.0.1:6379[1]>这样。如果你想切换回默认数据库,只要在命令行界面键入select 0即可。


    为了方便,我们把 

    redis-server,和 redis-cli 提取出来
    [root@localhost local]# mkdir -p redis/bin
    [root@localhost local]# mkdir -p redis/etc
    [root@localhost local]# cp /usr/share/redis-2.8.9/src/redis-server /usr/share/redis-2.8.9/src/redis-cli /usr/local/redis/bin/
    [root@localhost local]# cp /usr/share/redis-2.8.9/redis.conf /usr/local/redis/etc/

    启动  redis-server 

    [root@localhost src]# ./redis-server 
    [7419] 11 May 18:09:10.311 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
    [7419] 11 May 18:09:10.312 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 2.8.9 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in stand alone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 7419
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    [7419] 11 May 18:09:10.313 # Server started, Redis version 2.8.9
    [7419] 11 May 18:09:10.313 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    [7419] 11 May 18:09:10.314 * The server is now ready to accept connections on port 6379

    很明显,这不符合我们的需求,我们需要让他后台打开,

    vi /usr/local/redis/etc/redis.conf 

    将行 daemonize no 改为 daemonize yes

    再次执行  redis-server /usr/local/redis/etc/redis.conf 

    # redis-server /usr/local/redis/etc/redis.conf 

    我们再登陆测试一下

    # redis-cli 
    redis 127.0.0.1:6479> set test test
    OK
    redis 127.0.0.1:6479> get test
    "test"

    到此Redis 安装成功.

    Redis 客户端测试

    1. Java 官方推荐客户端 Jedis
    import java.util.Date;
    import redis.clients.jedis.Jedis;
    
    public class RedisTest {
    
        public static void main(String[] args) {
            long start = System.currentTimeMillis();
            String host = "127.0.0.1";
            int port = 6479, timeout = 30000;
            Jedis jedis = new Jedis(host, port, timeout);
            for (int i = 1; i <= 500000; i++) {
                String key = "comppara_" + i;
                String value = "{param1: " + i + ", param2: " + i + ", param3: " + i + "}";
                jedis.set(key, value);
            }
            long end = System.currentTimeMillis();
            System.out.println(Thread.currentThread().getName() + " insert times " + (end - start));
    
            long s = System.currentTimeMillis();
            for (int i = 0; i <= 500000; i++) {
                String key = "comppara_" + i;
                jedis.get(key);
            }
            long e = System.currentTimeMillis();
            System.out.println(Thread.currentThread().getName() + " read times " + (e - s));
        }
    }
    1. C 官方推荐客户端 hiredis

        C 也不怎么会用,就改的 hiredis 自带的 example.c 示例,编译完了直接执行 ./hiredis-example

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "time.h"
    #include "hiredis.h"
    
    void get_time() {
            time_t rawtime;
            struct tm * timeinfo;
            time ( &rawtime );
            timeinfo = localtime ( &rawtime );
            printf ( "07The current date/time is: %s", asctime (timeinfo) );
    }
    int main(void) {
        unsigned int j;
        redisContext *c;
        redisReply *reply;
    
        struct timeval timeout = { 1, 500000 }; // 1.5 seconds
        c = redisConnectWithTimeout((char*)"127.0.0.1", 6479, timeout);
        if (c == NULL || c->err) {
            if (c) {
                printf("Connection error: %s
    ", c->errstr);
                redisFree(c);
            } else {
                printf("Connection error: can't allocate redis context
    ");
            }
            exit(1);
        }
    
            get_time();
            printf("test_bach start");
            for (int i = 1; i <= 500000; i++) {
    redisCommand(c,"SET param_%d {param1:param%d,param2:param%d,param3:param%d,param4:param%d}", i, i, i, i, i);
            }
            printf("test_bach end");
            get_time();
    
            for (int j = 1; j <= 500000; j++) {
    redisCommand(c,"GET param_%d", j);
            }
            get_time();
    
        return 0;
    }

    测试主机配置:8CPU32G内存,测试结果 C 插入 50W 记录大概在31秒左右,JAVA 34秒左右;读 50W 的速度 C 大概需要 29 s 左右,JAVA 需要 31s 左右。如果是远程机器调用JAVA速度基本跟C相差无几。

  • 相关阅读:
    U盘PE系统下安装WIN2003和WINXP的方法(非GHOST版)
    自己做U盘急救杀毒
    Windows Server 2003 SP2 企业版 ISO 下载 629M
    解决开机关机慢问题
    一般处理程序
    [转]iframe自适应高度详解(希望对大家有用)非常经典,非同凡响
    ie6下position fixed的失效bug
    php文件上传MAX_FILE_SIZE不起作用的问题
    IE6测试网页显示空白页面
    自己写的面向过程php验证码
  • 原文地址:https://www.cnblogs.com/mjorcen/p/3721983.html
Copyright © 2011-2022 走看看