Redis入门篇

Redis 是一个高性能的key-value数据库。它支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。与memcached一样,数据都是缓存在内存中。区别的是redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
1)Mac环境下安装redis
从redis官网http://www.redis.io/ 下载redis最新版本redis-3.2.0.tar.gz,解压redis-3.2.0.tar.gz后去到目录cd redis-3.2.0,然后执行make命令进行安装,也可以执行make test命令看看redis 内部的一些东西是否OK,执行make test后的结果如下:

\o/ All tests passed without errors!
Cleanup: may take some time... OK

在启动redis之前先对配置文件redis.conf做一些修改:

后台运行,yes是后台运行,no是前台运行,将输出到终端(默认)
daemonize yes
如果daemonize参数为yes的话就会产生pid文件,以下是pid文件的定义
pidfile /var/run/redis.pid
日志输出文件,默认在前端运行的时候是stdout输出到终端,如果用守护进程运行的时候将日志输入到
/dev/null,如果想记录日志,就必须为其指定logfile位置
logfile <redis安装目录>/log/redis.log

接下来就可以运行命令./src/redis-server redis.conf启动redis,redis将会以后台的方式运行,可以用命令cat ./log/redis.log来查看redis的日志。

6383:M 16 Jun 12:38:54.013 * Increased maximum number of open files to 
10032 (it was originally set to 256).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 6383
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

6383:M 16 Jun 12:38:54.018 # Server started, Redis version 3.2.0
6383:M 16 Jun 12:38:54.019 * DB loaded from disk: 0.001 seconds
6383:M 16 Jun 12:38:54.019 * The server is now ready to accept connections 
on port 6379

从上面可以看出redis已经在本地运行起来了,默认端口是6379。
redis-cli 跟上命令会将参数发送到本地redis 6379的端口,下面来看看基本操作:

$ ./src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set mykey helloworld
OK
127.0.0.1:6379> get mykey
"helloworld"
127.0.0.1:6379> 

使用命令./src/redis-cli shutdown来关闭redis,执行完命令后可以查看到日志如下:

6383:M 16 Jun 16:42:34.244 # User requested shutdown...
6383:M 16 Jun 16:42:34.245 * Saving the final RDB snapshot before exiting.
6383:M 16 Jun 16:42:34.246 * DB saved on disk
6383:M 16 Jun 16:42:34.246 * Removing the pid file.
6383:M 16 Jun 16:42:34.246 # Redis is now ready to exit, bye bye...

2)使用java对redis进行操作
在java项目里面添加依赖的jar包:jedis-2.6.1.jar,junit-4.12.jar,commons-pool2-2.2.jar,然后创建如下的测试类:

package com.pa.redis;
import org.junit.*;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisTest {
 
    JedisPool pool;  
    Jedis jedis;  
    @Before  
    public void setUp() {  
        pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1",6379);  
        jedis = pool.getResource();
    }
    @Test
    public void testString(){  
        //-----添加数据----------  
        jedis.set("name","alex");//向key-->name中放入了value-->alex 
        System.out.println(jedis.get("name"));//执行结果:alex  
  
        //-----修改数据-----------  
        //1、在原来基础上修改  
        jedis.append("name","edward");  //类似map将edward追加到已有的value之后  
        System.out.println(jedis.get("name"));//执行结果:alexedward  
  
        //2、直接覆盖原来的数据  
        jedis.set("name","钟汉良");  
        System.out.println(jedis.get("name"));//执行结果:钟汉良 
  
        //删除key对应的记录  
        jedis.del("name");  
        System.out.println(jedis.get("name"));//执行结果:null  
  
        /** 
         * mset相当于 
         * jedis.set("name","edward"); 
         * jedis.set("idol","钟汉良"); 
         */  
        jedis.mset("name","edward","idol","钟汉良");  
        System.out.println(jedis.mget("name","idol"));  
    }  
}

右键Run As -->Junit Test,会看到如下图的报错:



是因为缺少了依赖的hamcrest jar包,将hamcrest-core-1.3.jar添加到Java Build Path之后再运行结果如下:

alex
alexedward
钟汉良
null
[edward, 钟汉良]

如果执行shutdown的命令关闭本地的redis客户端,然后运行RedisTest将会报Connection refused的错误:


总结
本文主要介绍了mac环境下安装redis和使用java对redis进行一些简单的操作,这里推荐几个不错的redis学习网站:
基础学习:http://try.redis.io/
更多命令操作参考:http://redis.io/commands

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容