redis简单介绍:
是一种Nosql数据库,Nosql全称是Not Only SQL,是一种不同于关系型数据库的数据库管理系统设计方式。对NoSQL最普遍的解释是“非关系型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS
So what can I do with Jedis?
All of the following redis features are supported:
• Sorting
• Connection handling
• Commands operating on any kind of values
• Commands operating on string values
• Commands operating on hashes
• Commands operating on lists
• Commands operating on sets
• Commands operating on sorted sets
• Transactions
• Pipelining
• Publish/Subscribe
• Persistence control commands
• Remote server control commands
• Connection pooling
• Sharding (MD5, MurmureHash)
• Key-tags for sharding
• Sharding with pipelining
• redis中文官方网站: http://redis.cn/
• redis中文版命令参考: http://redis.readthedocs.org/en/latest/index.html
• redis (Win32/64 Dušan Majkić.): https://github.com/dmajkic/redis/downloads
• jedis 源码: https://github.com/xetorthio/jedis
• jedis jar: https://github.com/xetorthio/jedis/downloads
在java程序中,使用redis步骤:
下载redis
redis (Win32/64 Dušan Majkić.):下载地址: https://github.com/dmajkic/redis/downloads
下载黄线部分
下载完成后,解压
打开黄线文件
起动redis-server.exe就可以进行如下测试了,不过在测试前还需要下载jedis开发包哦,注意在测试时,不要关闭redis-server.exe
注意,在做以下测试时,需要打开redis服务端
下载jedis开发包
jedis-2.1.0.jar是目前最新的开发包,里面增加了许多 新的方法。
如下图示例:
1.将jedis开发包加入到lib目录下
01 | Java中使用redis示例程序: |
02 | Jedis jedis = new Jedis( "localhost" , 6379 ); |
03 | |
04 | jedis.set( "foo" , "bar" ); |
05 | String value = jedis.get( "foo" ); |
06 |
07 | 测试代码 |
08 | import java.util.Iterator; |
09 | import java.util.List; |
10 | import java.util.Set; |
11 |
12 | import redis.clients.jedis.Jedis; |
13 |
14 | public class Test01 { |
15 | public static void main(String[] args) { |
16 | // 连接 |
17 | Jedis jedis = new Jedis( "localhost" , 6379 ); |
18 | // 对字符串的操作 |
19 |
20 | // 给名称为apple的key赋值 |
21 | jedis.set( "apple" , "www.apple.com" ); |
22 | // 返回名称为apple的key的value |
23 | // System.out.println(jedis.get("apple")); |
24 |
25 | // 将value追加到key原来值的末尾 |
26 | // System.out.println(jedis.append("db", "mysql")); |
27 | // System.out.println(jedis.get("db")); |
28 |
29 | // 若key不存在,即把key设为value |
30 | // System.out.println(jedis.exists("myphone")); |
31 | // System.out.println(jedis.append("myphone", "nokia")); |
32 |
33 | // 对list操作 |
34 |
35 | // 将student1插入到teacher列表的表头 |
36 | // System.out.println(jedis.lpush("teacher", "student1")); |
37 | // 将student2插入到teacher列表的表头 |
38 | // System.out.println(jedis.lpush("teacher","student2")); |
39 | // 返回teacher列表的长度 |
40 | // System.out.println(jedis.llen("teacher")); |
41 | // 返回teacher列表中的元素,下表从0开始 |
42 | // System.out.println(jedis.lrange("teacher", 0, -1)); |
43 |
44 | // java命令遍历 |
45 | /* |
46 | * List<String> list=jedis.lrange("teacher", 0, -1); for (Iterator |
47 | * iterator = list.iterator(); iterator.hasNext();) { String string = |
48 | * (String) iterator.next(); System.out.println(string); } |
49 | */ |
50 |
51 | // set操作 |
52 |
53 | // 向名称为dept的set中添加元素,成功返回1,失败返回0,无序 |
54 | System.out.println(jedis.sadd("dept", "张三")); |
55 | System.out.println(jedis.sadd("dept", "老马")); |
56 | jedis.sadd("dept", "老马2"); |
57 | jedis.sadd("dept", "老马3"); |
58 | jedis.sadd("dept", "老马4"); |
59 | jedis.sadd("dept", "老马5"); |
60 | jedis.sadd("dept", "老马6"); |
61 | // 返回dept的所有元素 |
62 | // System.out.println(jedis.smembers("dept")); |
63 | // 遍历 |
64 |
65 | /* |
66 | * Set<String> set=jedis.smembers("dept"); for (Iterator iterator = |
67 | * set.iterator(); iterator.hasNext();) { String string = (String) |
68 | * iterator.next(); System.out.println(string); } |
69 | */ |
70 | // 返回dept中的元素个数 |
71 | System.out.println(jedis.scard("dept")); |
72 | // 删除【老马】这个元素 |
73 | System.out.println("删除某个元素" + jedis.srem("dept", "老马")); |
74 | System.out.println(jedis.smembers("dept")); |
75 |
76 | // 有序集(个人理解,有序集,就是有序的set集合) |
77 |
78 | /* |
79 | * //向class中添加元素,100用于排序 System.out.println(jedis.zadd("class", 100, |
80 | * "老马")); System.out.println(jedis.zadd("class", 100, "老马dd")); |
81 | * //若"老马"元素存在,则用88替换以前的数据 jedis.zadd("class", 88, "老马"); |
82 | * //返回"老马"元素的scope值 System.out.println(jedis.zscore("class","老马")); |
83 | * System.out.println(jedis.zadd("class", 12, "老张")); |
84 | * //显示class中所有的元素(元素按scope从小到大排列) |
85 | * System.out.println(jedis.zrange("class", 0, -1)); //返回class中元素的个数 |
86 | * System.out.println(jedis.zcard("class")); jedis.zrem("class", |
87 | * "老马dd"); System.out.println(jedis.zrange("class", 0, -1)); |
88 | * //显示class中所有的元素(元素按scope从大到小排列) |
89 | * System.out.println(jedis.zrevrange("class", 0, -1)); |
90 | */ |
91 | } |
92 | } |
93 | 体会: 1 .通过引入jedis开发包,可通过java程序操作redis数据库 |
94 | 2 . reids提供了多种命令,来操作set,list,zset,string等数据类型,多熟悉,对号入座哦,呵呵 |
95 | 3 . 与java中提供的操作集合的方法对比学习 |
96 | 4 . 命令比关系数据库简单,各个元素之间没有关系也可存入,这是NOSQL与关系数据库的一点区别(个人的一点小小体会) |