您的位置:首页 > 数据库 > Redis

【NoSql】Redis实践篇-简单demo实现(一)

2018-01-22 01:02 531 查看
Redis是一个key-value存储系统。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset–有序集合)和hash(哈希类型)。这些数据类型支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从复制)。

Memcache与Redis区别

Memcache提供的数据类型少,只有键值对,Redis提供的数据类型相对较多
Memcache关机就没了,数据全部存到内存当中,但是没有提供故障恢复,Redis可以将数据存储到磁盘中
redis提供主从复制,Memcache无
Memcache是多线程的(使用协议解决的),redis是单线程

Windows下Redis的安装使用

1,安装Redis

官方下载:http://redis.io/download可以根据需要下载不同版本

windows版:https://github.com/mythz/redis-windows

下载完成后 可以右键解压到 某个硬盘下比如E:\redis64-2.6。

2,启动Redis

进入redis目录后 开启服务 (注意加上redis.conf)

redis-server.exe redis.conf
这个窗口要保持开启 关闭时redis服务会自动关闭



注:redis会自动保存数据到硬盘 所以如果是第二次开启时 多了一个 DB loaded from disk

3,测试使用

另外开启一个命令行窗口 进入redis目录下(注意修改自己的ip)

redis-cli.exe -h 192.168.24.215 -p 6379



4,利用JAVA操作Redis

[java] view plain copy print?import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import javax.sound.midi.Soundbank;
import java.util.*;

public class RedisTest {
JedisPool pool;
Jedis jedis;
@Before
public void setUp() {
pool = new JedisPool(new JedisPoolConfig(), “192.168.24.215”);

jedis = pool.getResource();
/* jedis.auth(“password”); */
}

/**
* Redis存储初级的字符串
* CRUD
*/
@Test
public void testBasicString(){
//—–添加数据———-
jedis.set(”name”,“hejingyuan”);//向key–>name中放入了value–>hejingyuan
System.out.println(jedis.get(”name”));//执行结果:hejingyuan

//—–修改数据———–
//1、在原来基础上修改
jedis.append(”name”,“xvshu”); //很直观,类似map 将xvshu append到已经有的value之后
System.out.println(jedis.get(”name”));//执行结果:hejingyuanxvshu

//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”,”hejingyuan”);
* jedis.set(“xvshu”,”何静媛”);
*/
jedis.mset(”name”,“hejingyuan”,“xvshu”,“何静媛”);
System.out.println(jedis.mget(”name”,“xvshu”));

}

}
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import javax.sound.midi.Soundbank;
import java.util.*;

public class RedisTest {
JedisPool pool;
Jedis jedis;
@Before
public void setUp() {
pool = new JedisPool(new JedisPoolConfig(), "192.168.24.215");

jedis = pool.getResource();
/*  jedis.auth("password");  */
}

/**
* Redis存储初级的字符串
* CRUD
*/
@Test
public void testBasicString(){
//-----添加数据----------
jedis.set("name","hejingyuan");//向key-->name中放入了value-->hejingyuan
System.out.println(jedis.get("name"));//执行结果:hejingyuan

//-----修改数据-----------
//1、在原来基础上修改
jedis.append("name","xvshu");   //很直观,类似map 将xvshu append到已经有的value之后
System.out.println(jedis.get("name"));//执行结果:hejingyuanxvshu

//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","hejingyuan");
* jedis.set("xvshu","何静媛");
*/
jedis.mset("name","hejingyuan","xvshu","何静媛");
System.out.println(jedis.mget("name","xvshu"));

}

}


输出结果:

hejingyuan
hejingyuanxvshu
何静媛
null
[hejingyuan, 何静媛]

结束语:

在操作过程中,Redis通过快照(snapshotting)方式默认保存到硬盘中,Redis默认会将快照文件存储在当前目录(可CONFIG GETdir来查看)的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。

在我们操作Redis过程中,它也在不断的向硬盘中存储





java操作Redis的各种测试:http://flychao88.iteye.com/blog/1527163
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: