Redis

介绍:
redis是一个key-value存储系统。可以做消息队列和缓存等,当然存储的类型不只是String-String那么简单,还有List、Set、Obj等。

一、redis安装
redis的安装类似于tomcat的安装,解压即可。Redis-x64-3.2.100.zip
解压之后可以看到redis-cli.exe、redis-server.exe 前者是客户端,后面的是服务端,服务端启动之后使用客户端就能链接进行存储内容了。
(1)服务端启动
在win的dos窗口下切换到解压目录,执行下面命令。注意:前面的目录不是命令,以下不再赘述

D:\Java\extends-service\Redis-3.2.100>redis-server.exe redis.windows.conf

在解压目录中可以看到这两个配置文件:redis.windows.conf、redis.windows-service.conf。配置内容详解参考
两个配置文件都可以启动服务端,但效果不同。
1)redis.windows.conf的效果
这里写图片描述
2)redis.windows-service.conf的效果
这里写图片描述

比较可得,redis.windows.conf能够启动redis服务并实现日志的监控,后者仅启动服务。
二、redis客户端测试
服务端启动之后,再开启一个dos窗口,执行以下命令
1)本地连接

D:\Java\extends-service\Redis-3.2.100>redis-cli.exe

这里写图片描述

测试redis存储key-value
设置key

127.0.0.1:6379> set myblog 'http://blog.csdn.net/Qiufeng_0ng'

获取value

127.0.0.1:6379> get myblog

这里写图片描述

2)远程连接
在公网服务器上运行redis服务,在本地客户端连接服务器。

D:\Java\extends-service\Redis-3.2.100>redis-cli.exe -h IP -p Port

三、程序中使用redis
首先添加redis.jar,这个自己在网上找。
1)连接本地redis获取所有key

package com.zut.test;

import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;

public class RedisKeyJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");

        // 获取数据并输出
        Set<String> keys = jedis.keys("*"); 
        Iterator<String> it=keys.iterator() ;   
        while(it.hasNext()){   
            String key = it.next();   
            System.out.println(key);   
        }
    }
}

2)存储String类型

package com.zut.test;

import redis.clients.jedis.Jedis;

public class RedisStringJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //设置 redis 字符串数据
        jedis.set("runoobkey", "www.runoob.com");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
    }
}

3)存储List类型

package com.zut.test;

import java.util.List;
import redis.clients.jedis.Jedis;

public class RedisListJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //存储数据到列表中
        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Google");
        jedis.lpush("site-list", "Taobao");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
    }
}

4)存储Map类型

package com.zut.test;

import java.util.HashMap;
import java.util.Map;

import redis.clients.jedis.Jedis;

public class RedistMap {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost", 6379);

        Map<String, String> map = new HashMap<>();
        map.put("zhangsan", "201300824111");
        map.put("lisi", "201300824112");
        map.put("wangwu", "201300824113");

        jedis.hmset("user-1", map);

        System.out.println(jedis.hvals("user-1"));
    }
}

5)存储对象

package com.zut.test;

import com.zut.domain.User;
import com.zut.utils.SerializationUtil;

import redis.clients.jedis.Jedis;

public class RedisObj {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("10.10.31.53", 6379);

        User user = new User("1", "范**", "男", "网络131", "网络工程", "1261525@qq.com", "181378007");
        User user1 = new User("2", "段**", "男", "网络131", "网络工程", "1261526@qq.com", "181378008");
        User user2 = new User("3", "韩**", "男", "网络131", "网络工程", "1261827@qq.com", "181378009");
        User user3 = new User("4", "李**", "男", "网络131", "网络工程", "1261528@qq.com", "181378010");

//      jedis.set("user".getBytes(), SerializationUtil.serialize(user));
        jedis.lpush("uu".getBytes(), SerializationUtil.serialize(user));
        jedis.lpush("uu".getBytes(), SerializationUtil.serialize(user1));
        jedis.lpush("uu".getBytes(), SerializationUtil.serialize(user2));
        jedis.lpush("uu".getBytes(), SerializationUtil.serialize(user3));


        byte[] bt = null;
        while((bt = jedis.lpop("uu".getBytes())) != null) {
            User person = (User)SerializationUtil.deserialize(bt);
            System.out.println(person.toString());
        }

//      byte[] bs= jedis.get("user".getBytes());
//      User person = (User)SerializationUtil.deserialize(bs);
//      
//      System.out.println(person.toString());
    }
}

存储对象需要序列化与反序列化

package com.zut.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializationUtil {
    /**
     * 序列化
     * 
     * @param object
     * @return
     */
    public static byte[] serialize(Object object) {
        ObjectOutputStream oos = null;
        ByteArrayOutputStream baos = null;
        try {
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            byte[] bytes = baos.toByteArray();
            return bytes;
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 反序列化
     * 
     * @param bytes
     * @return
     */
    public static Object deserialize(byte[] bytes) {
        ByteArrayInputStream bais = null;
        try {
            bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            return ois.readObject();
        } catch (Exception e) {

        }
        return null;
    }

}

参考连接:
http://www.cnblogs.com/lc-chenlong/p/4194150.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值