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类型相对更多,<br/>
* 包括string(字符串)、list(链表)、 set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。<br/>
* 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作 ,而且这些操作都是原子性的。<br/>
* 在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。<br/>
* 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave。<br/>
* 所需jar包:jedis-2.6.2.jar hamcrest-core-1.3.jar junit-4.11.jar<br/>
*
* @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<String> 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 删除一个key
del key 返回随机key
randomkey 返回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 key 2、链表操作
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 index 3、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为value
hset hash1 field value 获取指定的hash field
hget hash1 field 同时设置多个field
hmset hash1 field1 value1 field2 value2 field3 value3 一次获取多个field
hmget hash1 field1 field2 field3 测试制定的hash field是否存在
hexists hash1 field 获取hash的field数量
hlen hash1 返回hash所有的field
hkeys hash1 返回hash所有的value
hvals hash1 获取某个hash中全部的field及value
hgetall hash1 删除指定的field
hdel hash1 field 4、集合结构操作
特点:无序性、确定性、唯一性 往集合众添加元素
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 value 6、有序集合
概念:它是在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】

初识Redis的更多相关文章

  1. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  2. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  3. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

  4. 01:初识Redis

    付磊和张益军两位大咖写的葵花宝典(Redis开发和运维)学习笔记. 一.初识Redis 1.redis简介 Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的 ...

  5. redis实战笔记(1)-第1章 初识Redis

    第1章 初识Redis 注:本书在redis3.0版本的,比如redis3.0以后支持服务端集群.3.0之前只能客户端分片.    本章主要内容 1.Redis与其他软件的相同之处和不同之处 2.Re ...

  6. Linux(5)- MariaDB、mysql主从复制、初识redis

    一.MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ...

  7. 分布式数据存储 之 Redis(一) —— 初识Redis

    分布式数据存储 之 Redis(一) -- 初识Redis 为什么要学习并运用Redis?Redis有什么好处?我们步入Redis的海洋,初识Redis. 一.Redis是什么 ​ Redis 是一个 ...

  8. [转]Redis之(一)初识Redis

    原文地址:http://blog.csdn.net/u012152619/article/details/52550315 Redis之(一)初识Redis 标签: Redisredis-server ...

  9. 1.初识Redis

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  10. Redis——学习之路一(初识redis)

    在接下来的一段时间里面我要将自己学习的redis整理一遍,下面是我整理的一些资料: Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store),所以re ...

随机推荐

  1. 汇编语言-求X的阶乘

    1. 题目:求X的阶乘值 2. 要求:输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现. 3. 提示:可以用递归来实现,也可以用简单的循环来实现. 这里使用循环来实现: 对 ...

  2. 如何在CentOS5中增加CentALT的源

    1. 建立centalt.repo    指令: vi /etc/yum.repos.d/centalt.repo 2. 將下面的內容貼進去    [CentALT]    name=CentALT ...

  3. visual studio中创建单元测试

    1 打开  工具--自定义 2 选择 上下文菜单--编辑器上下文菜单|代码窗口 3 在这里我们可以看到“创建单元测试”这个菜单了,将它移到运行测试菜单下面 4 关闭VS并重启 重启后再对着类名,点击右 ...

  4. 一款非常炫酷的jQuery动态随机背景滚动特效

    一款非常炫酷的jQuery动态随机背景滚动特效 图片背景会不停息的滚动,带有那种漂浮的视觉效果,小圈圈飘动. 更好的是还兼容IE6浏览器,大伙可以好好研究研究. 适用浏览器:IE6.IE7.IE8.3 ...

  5. php操作mysql数据库的基本类

    代码如下 复制代码 <?php$dbhost='localhost';$dbuser='root';$dbpass='123456';$dbname='products';$connect=my ...

  6. 不再用.NET框架

    .NET 平台很棒.真的很棒.直到它不再那么棒.我为什么不再用 .NET?简单来说,它限制了我们选择的能力(对我来说很重要),转移了我们的注意力,使得我们向内认知它的安全性,替代了帮助我们认知外面广阔 ...

  7. [转]Oracle学习记录 九 Prc C学习

    经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 在这记一下,这是 ...

  8. Oracle定义两个变量,并对两个变量的值的长度进行判断

    这个例子其实很简单,但是往往简单的东西如果不用心就会漏洞百出,简单的一个逻辑判断,是为了给复杂逻辑判断做出铺垫 语法格式: if<condition_expression> then pl ...

  9. C++中的struct和class的区别

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...

  10. 一致性hash应用到redis

    理解分布式存储的本质 有一个经典的实践经验: 数(值)据大了, 什么都是问题! 如果要求128B或更大数值计算, 哪么四则运算会是个大问题! 如果要求128T或更大日志存储, 哪么文件存储会是个大问题 ...