Redis

来源:互联网 发布:windows有多复杂 编辑:程序博客网 时间:2024/06/05 16:35

介绍:
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

原创粉丝点击