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
网友评论