Redis学习记录
2016-11-07 14:17
387 查看
前言:
Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,Redis支持各种不同方式的排序。
和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。
1、pom.xml中引入如下jar:
2、spring配置文件创建redis访问资源路径:
3、编写RedisDao类
Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,Redis支持各种不同方式的排序。
和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。
Redis官方网网站是:http://www.redis.io/ windows环境下,http://www.redis.io/download 下载安装文件,安装即可。 Linux环境下,参考:http://www.jb51.net/article/79096.htm http://www.linuxdiyf.com/linux/13401.html Redis客户端工具:win8环境嫌安装redis-desktop-manager麻烦,干脆用redisclient,下载安装即可
1、pom.xml中引入如下jar:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <!-- 序列化工具--> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.12</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.12</version> </dependency>
2、spring配置文件创建redis访问资源路径:
<!-- 配置redis访问路径 --> <bean id="redisDao" class="com.lcsuo.dao.RedisDao"> <constructor-arg index="0" value="127.0.0.1" /> <constructor-arg index="1" value="6379" /> </bean>
3、编写RedisDao类
package com.lcsuo.dao; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import com.dyuproject.protostuff.LinkedBuffer; import com.dyuproject.protostuff.ProtobufIOUtil; import com.dyuproject.protostuff.runtime.RuntimeSchema; public class RedisUtils { private static JedisPool jedisPool; private static final String PASSWORD = "123456"; public RedisUtils(String ip, int port){ this.jedisPool = new JedisPool(ip, port); } /** * 设置单个值 * * @param key * @param value * @return */ public static String set(String key, String value) { return set(0, key, value, 0); } /** * 设置单个值 * * @param dbNumber 指定数据库 * @param key * @param value * @param expire有效时间单位 秒,为0时不失效 * @return */ public static String set(int dbNumber,String key, String value,int expire) { try(Jedis jedis = jedisPool.getResource()){ jedis.auth(PASSWORD); return jedis.set(key, value); }catch (Exception e) { e.printStackTrace(); } return null; } /** * 获取单个值 * * @param key * @return */ public static String get(String key) { return get(0, key); } /** * 获取单个值 * * @param key * @return */ public static String get(int dbNumber,String key) { try(Jedis jedis = jedisPool.getResource()){ jedis.auth(PASSWORD); return jedis.get(key); }catch (Exception e) { e.printStackTrace(); } return null; } public static Object setObject(String key, Object obj){ return setObject(0,key,obj,0); } /** * 保存对象 * @param key * @param obj * @return */ public static Object setObject(int dbNumber, String key, Object obj, int expire){ RuntimeSchema<Object> schema = RuntimeSchema.createFrom(Object.class); try(Jedis jedis = jedisPool.getResource()){ jedis.auth(PASSWORD); //序列化 byte[] byteArray = ProtobufIOUtil.toByteArray(obj, schema, LinkedBuffer.allocate(512)); int seconds = 3600; return jedis.setex(key.getBytes(), seconds, byteArray); }catch (Exception e) { e.printStackTrace(); } return null; } public static Object getObject(String key){ getObject(0,key); return null; } /** * 获取对象 * @param dbNumber * @param key * @return */ public static Object getObject(int dbNumber,String key){ RuntimeSchema<Object> schema = RuntimeSchema.createFrom(Object.class); try(Jedis jedis = jedisPool.getResource()){ jedis.auth(PASSWORD); byte[] bs = jedis.get(key.getBytes()); //反序列化 if(bs != null){ Object obj = schema.newMessage(); ProtobufIOUtil.mergeFrom(bs, obj, schema); return obj; } }catch (Exception e) { e.printStackTrace(); } return null; } }
相关文章推荐
- Redis学习记录之命令String(九)
- [置顶] redis3.2 学习记录 springmvc +jredis +redis 整合
- Redis学习记录之persistence简析(二十五)
- redis学习记录
- redis学习记录03-redis订阅与发布
- Redis学习记录之下载安装(二)
- Redis学习记录之Java中的初步使用
- Redis学习记录之命令Hash(十)
- Redis学习和应用记录(2)--常用数据类型及命令
- Redis学习记录之Server(二十二)
- Redis学习记录之集群规范(二十六)
- Redis学习记录之————微博项目
- Redis学习记录
- redis学习记录05-redis事务
- Redis学习记录之Script(二十)
- redis学习记录06-分布式锁
- Redis学习记录之集群教程(二十七)
- redis学习记录(redis的持久化操作、基于java的jedis操作)
- 记录学习的点滴(Redis常用命令)
- Redis学习记录之配置文件(四)