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
- Redis
- redis
- Redis
- redis
- Redis
- redis
- Redis
- redis
- REDIS
- Redis
- Redis
- redis
- Redis
- Redis
- Redis
- Redis
- Redis
- Redis
- string
- ajax的sync设置false失效的问题解决方法
- POJ 2243 Knight Moves bfs || 双向bfs
- 如何在虚拟环境中创建django项目
- postgreSQL数据库中postgresql.conf配置
- Redis
- Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程
- SAP-MM物料主数据相关的主要后台表间关系
- validate的表单验证
- 书籍收藏及问题研究
- python代码`if not x:` 和`if x is not None:`和`if not x is None:`使用
- 移动游戏的互动新颖性
- mysql常用函数汇总
- ZOJ 3446 Doraemon's Battle (三维dp+BFS)【打怪类模板】