启动redis本地服务

来源:互联网 发布:360手机数据恢复 编辑:程序博客网 时间:2024/05/22 15:39

首先是安装环境
windows版redis:https://github.com/MSOpenTech/redis/releases
linux版redis:http://redis.io/download

我的电脑是windows版本接下来windows为例,现在我们的环境安装好了,接下来是要启动redis服务,启动要在两个dos界面输入命令,为了方便我将这两条命令做成批处理,
start redis-server.exeredis.windows.conf
start redis-cli.exe -h 127.0.0.1 -p 6379
将这两句话写入txt文件保存后,将文件后缀改为bat就可以直接启动(这个文件要放在下载回来的redis文件下)

前期准备工作已经完成,接下来可以了解redis是个什么东西了。简单的来说redis是一个分布式的(string,object)的一个map,可以用于信息之间的传递。下面是java和redis的使用。

public class RedisJava {    public static void main(String[] args) {        //连接本地redis服务(本地服务要先开呀)        Jedis jedis=new Jedis("localhost");        System.out.println("连接成功");        //查看服务网是否运行        System.out.println("服务正在运行:"+jedis.ping());//      RedisJava.operationList(jedis);//      System.out.println(jedis.get("n1"));    }    public static void operationString(Jedis jedis){        jedis.set("key", "value");//添加数据        jedis.append("key", "s");//追加数据        System.out.println(jedis.get("key"));        jedis.del("key");//删除数据        System.out.println(jedis.get("key"));        //设置多个键值对        jedis.mset("name","liangjianyaun","age","23","qq","476777XXX");        System.out.println(jedis.get("name"));    }    public static void operationMap(Jedis jedis){        //-----添加数据----------          Map<String, String> map = new HashMap<String, String>();        map.put("name", "liangjianyuan");        map.put("age", "23");        map.put("qq", "123456");        jedis.hmset("user",map);        List<String> rsmap = jedis.hmget("user", "name", "age", "qq");        System.out.println(rsmap);        //删除某一个键值        jedis.hdel("user", "qq");        System.out.println(jedis.hmget("user",  "qq"));        System.out.println(jedis.hlen("user"));//key的个数        System.out.println(jedis.hkeys("user"));//返回所有的key值        System.out.println(jedis.hexists("user", "qq"));//判断是否有这个key        System.out.println(jedis.hvals("user"));        Iterator<String> iter=jedis.hkeys("user").iterator();          while (iter.hasNext()){              String key = iter.next();              System.out.println(key+":"+jedis.hmget("user",key));          }      }    public static void operationList(Jedis jedis){        //开始前,先移除所有的内容          jedis.del("java framework");          System.out.println(jedis.lrange("java framework",0,-1));          //先向key java framework中存放三条数据  方向左        jedis.lpush("java framework","spring");          jedis.lpush("java framework","struts");          jedis.lpush("java framework","hibernate");          //再取出所有数据jedis.lrange是按范围取出,          //第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有          System.out.println(jedis.lrange("java framework",0,-1));          jedis.del("java framework");        //方向右        jedis.rpush("java framework","hibernate");         jedis.rpush("java framework","struts");          jedis.rpush("java framework","spring");          System.out.println(jedis.lrange("java framework",0,-1));    }}

为了方便对象的使用和减小new对象的开销,redis也有池的使用

public class JedisUtil {//    private static String ADDR="127.0.0.1";  //连接主机ip    private static int PORT=6379;//端口    private static int MAX_ACTIVE=1024;//最大连接数    private static int MAX_IDLE=200;//最大空闲数    private static int MAX_WAIT=10000;//连接等待时间    private static boolean TEST_ON_BORROW=true;//在获取连接的时候检查有效性    private static JedisPool jedisPool=null;     private static void initialPool(){         JedisPoolConfig config = new JedisPoolConfig();         config.setMaxTotal(MAX_ACTIVE);//最大连接数         config.setMaxIdle(MAX_IDLE);//最大空闲         config.setMaxWaitMillis(MAX_WAIT);//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;         config.setTestOnBorrow(TEST_ON_BORROW);//在获取连接的时候检查有效性, 默认false         jedisPool=new JedisPool(config, ADDR, PORT);     }    public synchronized static Jedis getJedis(){        if(null==jedisPool){            initialPool();        }        Jedis jedis=jedisPool.getResource();//获取实例        return jedis;    }     public static void closeJedis(Jedis jedis)      {        if ((null != jedis) && (null != jedisPool ))          jedisPool.returnResource(jedis);      }}

有关于redis订阅与发布的方面的内容,redis采用的pub/sub的方式来实现

广播类

public class TestPublist {    public static void main(String[] args) {        try {            Jedis jedis=new Jedis("localhost");            jedis.publish("redisChatTest", "恐怖广播");            jedis.publish("redisChatTest", "我没有名字,因为名字在这里没有意义");        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

订阅类

public class TestSubscribe {public static void main(String[] args) {    Jedis jedis=new Jedis("localhost");    //重写onMessage方法就可以接收到发布的信息    System.out.println("开始监听");    JedisPubSub jedisPubSub=new JedisPubSub() {        public void onMessage(String channel, String message) {            //channel监听器名字  消息            System.out.println("channel:" + channel + "    receives message :" + message);//          this.unsubscribe();//监听一回结束监听        }    };    jedis.subscribe(jedisPubSub, "redisChatTest");    System.out.println("监听结束。。。。");}}

最后来一起看看redis有关于同步方面的demo
、“`
public class RedisTransactions {
public static void main(String[] args) {
//有关于redis事务使用
RedisTransactions.test1Normal();
RedisTransactions.test2Trans();
}

//普通方法同步public static void test1Normal(){    Jedis jedis=new Jedis("localhost");    long start = System.currentTimeMillis();    for(int i=0;i<100000;i++){        String result=jedis.set("n"+i,"n"+i);//成功返回OK    }    long end = System.currentTimeMillis();     System.out.println("Simple SET: " + ((end - start)/1000.0) + " seconds");    jedis.disconnect();}//事务public static void test2Trans(){    Jedis jedis=new Jedis("localhost");    long start=System.currentTimeMillis();    Transaction tx=jedis.multi();    for(int i=0;i<100000;i++){        tx.set("t"+i,"t"+i);    }    List<Object>results=tx.exec();    long end = System.currentTimeMillis();     System.out.println("Transaction SET: " + ((end - start)/1000.0) + " seconds");     jedis.disconnect();}//管道public void test3Pipelined() {     Jedis jedis = new Jedis("localhost");     Pipeline pipeline = jedis.pipelined();     long start = System.currentTimeMillis();     for (int i = 0; i < 100000; i++) {         pipeline.set("p" + i, "p" + i);     }     List<Object> results = pipeline.syncAndReturnAll();     long end = System.currentTimeMillis();     System.out.println("Pipelined SET: " + ((end - start)/1000.0) + " seconds");     jedis.disconnect(); } 

}

“`

原创粉丝点击