博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识Redis
阅读量:6993 次
发布时间:2019-06-27

本文共 4114 字,大约阅读时间需要 13 分钟。

package com.wangzhu.redis;import java.util.List;import org.junit.After;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,
* 包括string(字符串)、list(链表)、 set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
* 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作 ,而且这些操作都是原子性的。
* 在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。
* 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave。
* 所需jar包:jedis-2.6.2.jar hamcrest-core-1.3.jar junit-4.11.jar
* * @author wangzhu * @date 2015-3-9上午9:10:16 * */public class TestRedis { Jedis jedis; JedisPool pool; @Before public void init() { pool = new JedisPool(new JedisPoolConfig(), "localhost"); jedis = pool.getResource(); } @Test public void testPing() { System.out.println("Servier is runnning: " + jedis.ping()); // Servier is runnning: PONG } @After public void destroy() { jedis.disconnect(); } @Test public void testString() { // 获取 System.out.println("get===" + jedis.get("strKey")); // 设置 System.out.println("set===" + jedis.set("strKey", "qingyezhu")); // 获取 System.out.println("get===" + jedis.get("strKey")); // 删除 System.out.println("del===" + jedis.del("strKey")); // get===null // set===OK // get===qingyezhu // del===1 } @Test public void testList() { String listKey = "listKey"; // System.out.println("lpush===" // + jedis.lpush(listKey, "Redis", "MongoDb", "MySql", "Oracle", // "Db2")); System.out.println("lpush====" + jedis.lpush(listKey, "other")); long len = jedis.llen(listKey); System.out.println("size===" + len); List
list = jedis.lrange(listKey, 0, len); System.out.println("list====" + list); for (int i = 0; i < len; i++) { System.out.println(i + "===lindex===" + jedis.lindex(listKey, i)); } System.out.println(jedis.llen(listKey)); }}
1、字符串操作设置key的值set key value获取key的值get key设置过期的毫秒数pexpire key 10000查看key的生命周期(毫秒)pttl key设置key的生命周期(秒)expire key 1查看key的生命周期(秒)ttl key把指定的key设置为永久有效perisist key删除一个keydel key返回随机keyrandomkey返回key存储的类型type key改名rename key newkey一次设置多个值mset key1 value key2 value key3 value一次获取多个值mget key1 key2 key3把value追加到key的原值上append key value取指定key的value值得长度strlen key2、链表操作Redis的list类型其实就是一个每个子元素都是string类型的双向链表,链表的最大长度是2^32。list既可以用做栈,也可以用作队列。list的pop操作还有阻塞版本,主要是为了避免轮询。把值插入到链表头部lpush key value把值插入到链表尾部rpush key value返回并删除链表头部元素lpop key返回并删除链表尾部元素rpop key返回链表中[start,stop]中的元素lrange key start stop计算链表的元素的个数llen key返回index索引上的值lindex key index3、hashed类型操作Redis的hash是一个string类型的field和value的映射表,它的添加、删除操作都是O(1)(平均)。hash特别适用于存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象。配置:#配置字段最多64个hash_max_zipmap_entries 64#配置value最大为512字节hash_max_zipmap_value 512设置hash1的field为valuehset hash1 field value获取指定的hash fieldhget hash1 field同时设置多个fieldhmset hash1 field1 value1 field2 value2 field3 value3一次获取多个fieldhmget hash1 field1 field2 field3测试制定的hash field是否存在hexists hash1 field获取hash的field数量hlen hash1返回hash所有的fieldhkeys hash1返回hash所有的valuehvals hash1获取某个hash中全部的field及valuehgetall hash1删除指定的fieldhdel hash1 field4、集合结构操作特点:无序性、确定性、唯一性往集合众添加元素sadd key value1 value2 value3获取集合所有的元素smembers key删除集合某个元素srem key value返回并删除集合中的一个随机元素spop key随机取一个元素srandmember key判断集合中是否有某个值sismember key value返回集合元素的个数scard key求key1 key2 key3的交集sinter key1 key2 key3求key1 key2的并集sunion key1 key2求key1 key2的差集sdiff key1 key2求key1 key2的交集并存在res里sinterstore res key1 key2把source的value移动到dest集合中smove source dest value6、有序集合概念:它是在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动按新的值调整顺序。添加元素zadd key score1 value1查询member的排名zrank key member返回集合元素的个数zcard key删除集合中的元素zrem key value1 value2

 

参考:

Redis内存使用优化与存储【http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage】

Windows下Redis的安装使用【http://os.51cto.com/art/201403/431103.htm】

 

转载于:https://www.cnblogs.com/xiaoxian1369/p/4322740.html

你可能感兴趣的文章
设计模式之简单工厂模式
查看>>
使用ArcEngine开发自定义Tool并发布为GP服务
查看>>
Intel超低功耗CPU的一些信息
查看>>
Qt之信号与槽
查看>>
PDM/PLM系统授权模型的研究和应用(转载)
查看>>
Winform下的Datagrid的列风格(4)—DataGridComboBoxTableViewColumn
查看>>
上传图片 以及做成缩略图
查看>>
封装和多态
查看>>
POJ - 3041 Asteroids 【二分图匹配】
查看>>
luogu P4198 楼房重建——线段树
查看>>
使用property为类中的数据添加行为
查看>>
程序设计基础知识
查看>>
复变函数与积分变换
查看>>
12. 断点续传的原理
查看>>
C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法...
查看>>
Visifire图表
查看>>
python常用模块之paramiko与ssh
查看>>
AES算法在Python中的使用
查看>>
动手动脑3
查看>>
HDU 3397 Sequence operation(线段树区间染色加区间合并)
查看>>