Redis学习笔记整理 java例子

上传人:ji****72 文档编号:37549529 上传时间:2018-04-18 格式:DOC 页数:33 大小:98.50KB
返回 下载 相关 举报
Redis学习笔记整理  java例子_第1页
第1页 / 共33页
Redis学习笔记整理  java例子_第2页
第2页 / 共33页
Redis学习笔记整理  java例子_第3页
第3页 / 共33页
Redis学习笔记整理  java例子_第4页
第4页 / 共33页
Redis学习笔记整理  java例子_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《Redis学习笔记整理 java例子》由会员分享,可在线阅读,更多相关《Redis学习笔记整理 java例子(33页珍藏版)》请在金锄头文库上搜索。

1、redisredis 学习笔记整理学习笔记整理一、redis 环境搭建.2二、redis 学习笔记之数据类型 .3三、redis 学习笔记之排序 .11四、redis 学习笔记之事务 .16五、redis 学习笔记之 pipeline.20六、redis 学习笔记之发布订阅 .23七、redis 学习笔记之持久化 .28八、redis 学习笔记之主从复制 .30九、redis 学习笔记之虚拟内存 .31一、一、 redis 环境搭建环境搭建 1.简介简介redis 是一个开源的 key-value 数据库。它又经常被认为是一个数据结构服务器。因为它的 value不仅包括基本的 string 类

2、型还有 list,set ,sorted set 和 hash 类型。当然这些类型的元素也都是 string 类型。也就是说 list,set 这些集合类型也只能包含string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符 value 追加字符串(APPEND命令)。加加或者减减一个数字字符串(INCR 命令,当 然是按整数处理的).可以对 list 类型进行 push,或者 pop 元素操作(可以模拟栈和队列)。对于 set 类型可以进行一些集合相关操作 (intersection union difference)。memcache 也有类似与+,-的命令。不过 memca

3、che 的 value 只包括 string 类型。远没有 redis 的 value 类型丰富。和 memcahe 一样为了性能。redis 的数据通常都是放到内存中的。当然 redis 可以每间隔一定时间将内存中数据写入到磁盘以防止数据丢失。redis 也支持主从复制机制(master-slave replication)。redis 的其他特性包括简单的事务支持和 发布订阅(pub/sub)通道功能,而且 redis 配置管理非常简单。还有各种语言版本的开源客户端类库。2.安装安装下载地址:http:/ 2.0 目前是最新稳定版可以在 linux 下运行如下命令进行安装 $ tar xz

4、f redis-2.0.4.tar.gz$ cd redis-2.0.4$ makemake 完后 redis-2.0.4 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli下面启动 redis 服务.$./redis-server注意这种方式启动 redis 使用的是默认配置。也可以通过启动参数告诉 redis 使用指定配置文件使用下面命令启动.$ ./redis-server redis.confredis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。启动 redis 服务进程后,就可以使用测试客户端程

5、序 redis-cli 和 redis 服务交互了.比如$ ./redis-cliredis set foo barOKredis get foo“bar“这里演示了 get 和 set 命令操作简单类型 value 的例子。foo 是 key ,bar 是个 string 类型的 value没 linux 的可以通过这个在线的来练习,当然在线版的很多管理相关的命令是不支持的。http:/try.redis- 客户端客户端 hello,world客户端 jar 包地址 http:/ 。版本目前有点老,支持到 Redis 1.2.6。最新版 2.0 的还没 release在 eclipse 中新

6、建一个 java 项目,然后添加 jredis 包引用。下面是个 hello,world 程序 package jredisStudy;import org.jredis.*;import org.jredis.ri.alphazero.JRedisClient;public class App public static void main(String args) try JRedis jr = new JRedisClient(“192.168.56.55“,6379); /redis 服务地址和端口号String key = “mKey“;jr.set(key, “hello,redi

7、s!“);String v = new String(jr.get(key);String k2 = “count“;jr.incr(k2);jr.incr(k2);System.out.println(v);System.out.println(new String(jr.get(k2); catch (Exception e) / TODO: handle exception 好了 redis 环境已经搭建好了。后面会写写 redis 的各种类型和类型相关的命令和一些具体的应用场景 二、二、 redis 学习笔记之数据类型学习笔记之数据类型 本文介绍下 redis 支持的各种数据类型包括

8、string,list ,set ,sorted set 和 hash 1. keysredis 本质上一个 key-value db,所以我们首先来看看他的 key.首先 key 也是字符串类型,但是 key 中不能包括边界字符由于 key 不是 binary safe 的字符串,所以像“my key“和“mykeyn“这样包含空格和换行的 key 是不允许的顺便说一下在 redis 内部并不限制使用 binary 字符,这是 redis 协议限制的。“rn“在协议格式中会作为特殊字符。redis 1.2 以后的协议中部分命令已经开始使用新的协议格式了(比如 MSET)。总之目前还是把包含边

9、界字符当成非法的 key吧,免得被 bug 纠缠。另外关于 key 的一个格式约定介绍下,object-type:id:field。比如 user:1000:password,blog:xxidxx:title还有 key 的长度最好不要太长。道理很明显占内存啊,而且查找时候相对短 key 也更慢。不过也推荐过短的 key,比如 u:1000:pwd,这样的。显然没上面的 user:1000:password 可读性好。下面介绍下 key 相关的命令exits key 测试指定 key 是否存在,返回 1 表示存在,0 不存在del key1 key2 .keyN 删除给定 key,返回删除

10、key 的数目,0 表示给定 key 都不存在type key 返回给定 key 的 value 类型。返回 none 表示不存在 key,string 字符类型,list 链表类型 set 无序集合类型.keys pattern 返回匹配指定模式的所有 key,下面给个例子redis set test dsfOKredis set tast dsafOKredis set tist adffOKredis keys t*1. “tist“2. “tast“3. “test“redis keys tiast1. “tist“2. “tast“redis keys t?st1. “tist“2.

11、 “tast“3. “test“randomkey 返回从当前数据库中随机选择的一个 key,如果当前数据库是空的,返回空串 rename oldkey newkey 原子的重命名一个 key,如果 newkey 存在,将会被覆盖,返回 1 表示成功,0 失败。可能是 oldkey 不存在或者和 newkey 相同renamenx oldkey newkey 同上,但是如果 newkey 存在返回失败dbsize 返回当前数据库的 key 数量expire key seconds 为 key 指定过期时间,单位是秒。返回 1 成功,0 表示 key 已经设置过过期时间或者不存在ttl key

12、返回设置过过期时间的 key 的剩余过期秒数 -1 表示 key 不存在或者没有设置过过期时间select db-index 通过索引选择数据库,默认连接的数据库所有是 0,默认数据库数是 16 个。返回 1 表示成功,0 失败move key db-index 将 key 从当前数据库移动到指定数据库。返回 1 成功。0 如果 key 不存在,或者已经在指定数据库中flushdb 删除当前数据库中所有 key,此方法不会失败。慎用flushall 删除所有数据库中的所有 key,此方法不会失败。更加慎用2. string 类型类型string 是 redis 最基本的类型,而且 string

13、 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节。下面是 string 类型的定义。struct sdshdr long len;long free;char buf;buf 是个 char 数组用于存贮实际的字符串内容。其实 char 和 c#中的 byte 是等价的,都是一个字节len 是 buf 数组的长度,free 是数组中剩余可用字节数。由此可以理解为什么 string 类型是二进制安全的了。因为它本质上就是个 byte 数组。当然可以包

14、含任何数据了。另外 string 类型可以被部分命令按 int 处理.比如 incr 等命令,下面详细介绍。还有 redis 的其他类型像 list,set,sorted set ,hash它们包含的元素与都只能是 string 类型。如果只用 string 类型,redis 就可以被看作加上持久化特性的 memcached.当然 redis 对 string 类型的操作比 memcached多很多啊。如下:set key value 设置 key 对应的值为 string 类型的 value,返回 1 表示成功,0 失败setnx key value 同上,如果 key 已经存在,返回 0

15、。nx 是 not exist 的意思get key 获取 key 对应的 string 值,如果 key 不存在返回 nilgetset key value 原子的设置 key 的值,并返回 key 的旧值。如果 key 不存在返回 nilmget key1 key2 . keyN 一次获取多个 key 的值,如果对应 key 不存在,则对应返回 nil。下面是个实验,首先清空当前数据库,然后设置 k1,k2.获取时 k3 对应返回 nilredis flushdbOKredis dbsize(integer) 0redis set k1 aOKredis set k2 bOKredis mget k1 k2 k31. “a“2. “b“3. (nil)mset key1 value1 . keyN valueN 一次设置多个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号