首页 > 代码库 > 【NoSql】Redis实践篇-简单demo实现(一)

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


     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(主从复制)。

 

MemcacheRedis差别

 

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


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存储0基础的字符串 
     * 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

 




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