http://blog.csdn.net/u011129848/article/details/51527287
获取连接客户端链接
RedisClient.Java
package redis;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
public class RedisClient {
private JedisPool jedisPool;//非切片连接池
private ShardedJedisPool shardedJedisPool;//切片连接池
private static RedisClient redisClient;
private RedisClient()
{
initialPool();
initialShardedPool();
}
public static RedisClient getRedisClient(){
if(redisClient==null){
synchronized (RedisClient.class) {
if(redisClient==null) redisClient = new RedisClient();
}
}
return redisClient;
}
public Jedis getJedis() {
return jedisPool.getResource();
}
public ShardedJedis getShardedJedis() {
return shardedJedisPool.getResource();
}
/**
* 初始化非切片池
*/
private void initialPool()
{
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000l);
config.setTestOnBorrow(false);
jedisPool = new JedisPool(config,"127.0.0.1",6379);
}
/**
* 初始化切片池
*/
private void initialShardedPool()
{
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000l);
config.setTestOnBorrow(false);
// slave链接
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("127.0.0.1", 6379, "master"));
// 构造池
shardedJedisPool = new ShardedJedisPool(config, shards);
}
public void Close() {
jedisPool.close();
shardedJedisPool.close();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
各种类型存储的javaAPI
RedisAPI.java
package redis;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
public class RedisAPI {
public static void main(String[] args) {
// //连接本地的 Redis 服务
// Jedis jedis = new Jedis("127.0.0.1");
// System.out.println("Connection to server sucessfully");
// //查看服务是否运行
// System.out.println("Server is running: "+jedis.ping());
System.out.println(RedisClient.getRedisClient().getShardedJedis());
System.out.println(RedisClient.getRedisClient().getJedis());
}
private Jedis redis;
@Before
public void initConn(){
redis = RedisClient.getRedisClient().getJedis();
}
@Test
public void KeyApi(){
System.out.println("==============key=========================");
// 清空数据
System.out.println("清空库中所有数据:"+redis.flushDB());;
print("判断key111是否存在"+redis.exists("key111"));
print("增加key111:"+redis.set("key111", "hello world"));
print("输出key111:"+redis.get("key111"));
print("增加新的key112:"+redis.set("key112", "key112value"));
print("增加新的key113:"+redis.set("key113", "key113value"));
//输出所有key的的值 无序的
for(String key : redis.keys("*")){
print(key+":"+redis.get(key));
}
print("删除key111:"+redis.del("key111"));
print("key111是否存在:"+redis.exists("key111"));
//设置key的过期时间
print("设置key112的过期时间3秒"+redis.expire("key112", 3));
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
print("key112的剩余生存时间:"+redis.ttl("key112"));
print("key112的取消过期时间:"+redis.persist("key112"));
print("查看key112是否还存在:"+redis.exists("key112"));
print("查看key112的value类型:"+redis.type("key112"));
print("给key113改成key114:"+redis.rename("key113", "key114"));
print("查看key114value:"+redis.get("key114"));
}
@Test
public void StringApi(){
print("=====================string========================");
print("清空数据:"+redis.flushDB());
print("============单个增删改=============");
print("增加key001:"+redis.set("key001", "key001value"));
print("修改key001:"+redis.set("key001", "key-update")+" "+redis.get("key001"));
print("最后追加字符串:"+redis.append("key001", "-append")+" "+redis.get("key001"));
print("删除key001:"+redis.del("key001"));
print("==================多个一起添加,删除==================");
print("增减key021,key022,key023:"+redis.mset("key021","key021value","key022","key022value","key023","key023value"));
print("一次获取多个key值:"+redis.mget("key021","key022","key023"));
print("一次删除多个key:"+redis.del(new String[]{"key021","key022"}));
print("获取key021:"+redis.get("key021"));
print("===========other=======================");
print("不在在key时再添加值:"+redis.setnx("key031", "key031value"));
print("不在在key时再添加值:"+redis.setnx("key032", "key032value"));
print("存在在key时再添加值:"+redis.setnx("key032", "key032value_tow"));
print("key031:"+redis.get("key031"));
print("key032值没变:"+redis.get("key032"));
print("添加key033并设置过期时间:"+redis.setex("key033", 2, "key033value"));
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
print("获取key033值:"+redis.get("key033"));
print("获取值得子串key032:"+redis.getrange("key032",1, 5));
}
@Test
public void ListApi(){
//list存储结构是栈类型的 最后插入的索引是0
print("====================list======================");
print("清空数据:"+redis.flushDB());
print("===========增加=================");
print("添加了字符串list");
print("listString:"+redis.lpush("listString", "vector"));
print("listString:"+redis.lpush("listString", "vector"));
print("listString:"+redis.lpush("listString", "arraylist"));
print("listString:"+redis.lpush("listString", "hashmap"));
print("listNumber:"+redis.lpush("listNumber", "1"));
print("listNumber:"+redis.lpush("listNumber", "4"));
print("listNumber:"+redis.lpush("listNumber", "3"));
print("listNumber:"+redis.lpush("listNumber", "2"));
print("listString全部元素:"+redis.lrange("listString", 0, -1));
print("listNumber全部元素:"+redis.lrange("listNumber", 0, -1));
print("");
print("============修改=================");
print("对指定下标进行修改:"+redis.lset("listString", -1, "vector-update"));
print("修改后的0下标值:"+redis.lindex("listString", 0));
print("删除后的元素:"+redis.lrange("listString", 0, -1));
print("");
print("==============删除================");
print("删除指定的元素,重复的删除后添加的:"+redis.lrem("listString", 1, "vector"));
print("删除后的元素:"+redis.lrange("listString", 0, -1));
print("");
/*
* list中存字符串时必须指定参数为alpha,如果不使用SortingParams,而是直接使用sort("list"),
* 会出现"ERR One or more scores can't be converted into double"
*/
SortingParams sortingParameters = new SortingParams();
sortingParameters.alpha();//目测是根据字母顺序排序
print("排序元素:"+redis.sort("listString",sortingParameters));
print("排序元素:"+redis.sort("listNumber"));
}
@Test
public void SetApi(){
print("=====================set=====================");
print("清空数据:"+redis.flushDB());
print("============增加==============");
print("名为sets的集合中添加元素value1"+redis.sadd("sets", "value1"));
print("名为sets的集合中添加元素value2"+redis.sadd("sets", "value2"));
print("名为sets的集合中添加元素value3"+redis.sadd("sets", "value3"));
print("sets所有值:"+redis.smembers("sets"));
print("===============修改=============");
print("无法修改指定的值但是,不能存入相同的值:"+redis.sadd("sets", "value2"));
print("sets:"+redis.smembers("sets"));
print("============查询==================");
for(String value : redis.smembers("sets")){
print(value);
}
print("判断元素是否在集合中:"+redis.sismember("sets", "value2"));
print("==============删除=============");
print("删除指定的值:"+redis.srem("sets", "value2"));
print("元素出栈:"+redis.spop("sets"));
print("sets:"+redis.smembers("sets"));
print("");
print("==============集合运算=================");
print("名为sets1的集合中添加元素value1"+redis.sadd("sets1", "value1"));
print("名为sets1的集合中添加元素value2"+redis.sadd("sets1", "value2"));
print("名为sets1的集合中添加元素value3"+redis.sadd("sets1", "value3"));
print("名为sets2的集合中添加元素value3"+redis.sadd("sets2", "value3"));
print("名为sets2的集合中添加元素value4"+redis.sadd("sets2", "value4"));
print("名为sets2的集合中添加元素value5"+redis.sadd("sets2", "value5"));
print("sets1所有值:"+redis.smembers("sets1"));
print("sets2所有值:"+redis.smembers("sets2"));
print("sets1和sets2的交集:"+redis.sinter("sets1","sets2"));
print("sets1和sets2的并集:"+redis.sunion("sets1","sets2"));
print("sets1和sets2的差集:"+redis.sdiff("sets1","sets2"));
}
@Test
public void HashApi(){
print("================hash=================");
print("清空数据:"+redis.flushDB());
print("==================增加================");
print("hashs添加key001=>value001"+redis.hset("hashs", "key001", "value001"));
print("hashs添加key002=>value002"+redis.hset("hashs", "key002", "value002"));
print("hashs添加key003=>value003"+redis.hset("hashs", "key003", "value003"));
print("hashs添加key004=>4L"+redis.hincrBy("hashs", "key004", 4L));
print("hashs:"+redis.hgetAll("hashs"));
print("===================查询================");
print("判断是否存在key001:"+redis.hexists("hashs", "key001"));
print("查找key001的值:"+redis.hget("hashs", "key001"));
print("获得所有集合的key:"+redis.hkeys("hashs"));
print("获得所有集合的value:"+redis.hvals("hashs"));
print("=============修改====================");
print("修改key001值为value001_update:"+redis.hset("hashs", "key001", "value001_update"));
print("修改key004值增加11:"+redis.hincrBy("hashs", "key004", 11L));
print("hashs:"+redis.hvals("hashs"));
print("=============删除=======================");
print("删除key002:"+redis.hdel("hashs", "key002"));
print("hashs:"+redis.hgetAll("hashs"));
}
@Test
public void SortedSetApi(){
//有序集合类似
print("=================SortedSet================");
print("清空数据:"+redis.flushDB());
print("==============增加===============");
print("名为zsets添加数据value1:"+redis.zadd("zsets",1, "value1"));
print("名为zsets添加数据value2:"+redis.zadd("zsets",2, "value2"));
print("名为zsets添加数据value3:"+redis.zadd("zsets",3, "value3"));
print("名为zsets添加数据value4:"+redis.zadd("zsets",4, "value4"));
print("名为zsets添加数据value4:"+redis.zadd("zsets",4, "value4"));
print("zsets:"+redis.zrange("zsets", 0, -1));
print("===============查询===============");
print("查找元素的个数:"+redis.zcard("zsets"));
print("查找权重范围内元素的个数:"+redis.zcount("zsets",1,3));
print("查找元素value4的权重:"+redis.zscore("zsets","value4"));
print("=============修改===================");
print("=============删除===================");
print("删除value4:"+redis.zrem("zsets", "value4"));
print("redis:"+redis.zrange("zsets", 0, -1));
}
public void print(Object obj){
System.out.println(obj);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
这里就是简单的Java 调用Redis的crud方法,其实很简单,其中有几个jar包需要自己导入下
我用的是3.0+的redis
jar包在maven中央仓库只找到2.8.1的凑合用了
pom文件
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
jar包
补充我把代码放到了我的github上
https://github.com/xiewenda/javaProject/tree/master/ssm-parent/ssm-redis