好友
阅读权限10
听众
最后登录1970-1-1
|
说明:菜鸟一枚,正在学习Redis,没有底层的东西,只是一些命令的使用和讲解,希望能帮助到初学者。
一、Redis服务端:- package server;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- /**
- * Redis的服务端
- *
- * @author TongWei.Chen
- * @date 2016年11月18日11:57:44
- */
- public class RedisServer {
- //Redis服务器IP
- private static String REDIS_ADDR = "127.0.0.1";
- //Redis服务器端口号
- private static int REDIS_PORT = 6379;
- //可用连接实例的最大数目
- //若值为-1,则表示不限制。如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhusted(耗尽)
- private static int MAX_ACTIVE = -1;
- //控制一个pool中最多有多少个状态为idle(空闲的)Jedis实例,默认为8
- private static int MAX_IDLE = 100;
- //等待可用连接的最大时间,单位毫秒,默认值-1,表示永不超时,若超时,则抛出JedisConnectionException
- private static int MAX_WAIT = 1000 * 60 * 30;
- private static int TIME_OUT = 1000 * 60;
- //在选择一个Jedis实例时,是否提前进行valIDAte操作,若为true,则得到的Jedis实例都是可用的。
- private static boolean TEST_ON_BORROW = true;
-
- //Jedis实例
- private static JedisPool jedisPool = null;
-
- /**
- * 初始化连接池
- */
- static {
- try {
- JedisPoolConfig config = new JedisPoolConfig();
- config.setMaxActive(MAX_ACTIVE);
- config.setMaxIdle(MAX_IDLE);
- config.setMaxActive(MAX_WAIT);
- config.setTestOnBorrow(TEST_ON_BORROW);
- jedisPool = new JedisPool(config, REDIS_ADDR, REDIS_PORT, TIME_OUT);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 获取Jedis实例
- * @return
- */
- public static Jedis getJedis() {
- try {
- if (null != jedisPool) {
- return jedisPool.getResource();
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
- /**
- * 关闭Jedis,释放资源
- * @param jedis
- */
- public static void closeJedis(Jedis jedis) {
- if(null != jedis) {
- jedisPool.returnResource(jedis);
- }
- }
- }
二、Redis客户端
- package client;
- import redis.clients.jedis.Jedis;
- import server.RedisServer;
- /**
- * Redis的客户端
- *
- * @author TongWei.Chen
- * @date 2016年11月18日15:00:06
- *
- */
- public class RedisClient {
-
- //获取Jedis实例
- private Jedis jedis = RedisServer.getJedis();
- /**
- * 默认构造器选择第一个数据库
- */
- public RedisClient() {
- super();
- jedis.select(0);
- }
-
- /**
- * 选择数据库
- * @param index
- */
- public void selectDB(int index) {
- jedis.select(index);
- }
-
- /**
- * 清空所有的数据
- */
- public void flushDB() {
- jedis.flushDB();
- }
- }
三、string基本操作
- package test;
- import java.util.List;
- import redis.clients.jedis.Jedis;
- import server.RedisServer;
- import client.RedisClient;
- /**
- * 测试Redis之string结构
- *
- * @author TongWei.Chen
- * @date 2016年11月18日15:06:19
- *
- */
- public class TestString {
- //获取Jedis实例
- private Jedis jedis = RedisServer.getJedis();
-
- /**
- * 设置key-value
- * @param key
- * @param value
- */
- public String set(String key, String value) {
- return jedis.set(key, value);
- }
-
- /**
- * 根据key取value,没有对应的key则返回null
- * @param key
- */
- public String get(String key) {
- return jedis.get(key);
- }
-
- /**
- * 根据key删除
- * @param key
- */
- public Long del(String ... key) {
- return jedis.del(key);
- }
-
- /**
- * 返回key中字符串中的子串
- * 说明:
- * 【
- * 1.下标从0开始,若end超出了字符串总长度,则截取到最后一个元素
- * 2.若start为负数,则代表字符串从后往头开始,-5,-1代表从最后开始往头截取五个字符
- * 3.(0,-11)代表从第一个字符开始截取到从最后开始数到第11个字符结束。包含第11个
- * 】
- * @param key
- * @param start
- * @param end
- */
- public String getRange(String key, int start, int end) {
- return jedis.getrange(key, start, end);
- }
-
- /**
- * 覆盖给定key所对应的字符串,覆盖的位置从偏移量 start 开始。返回被修改后的字符串的长度
- * @param key
- * @param start
- * @param value
- */
- public Long setRange(String key, long start, String value) {
- return jedis.setrange(key, start, value);
- }
-
- /**
- * 设置key的值,返回旧值
- * 说明:
- * 【
- * 若key不存在,则返回null,但会创建此key
- * 】
- * @param key
- * @param value
- * @return
- */
- public String getSet(String key, String value) {
- return jedis.getSet(key, value);
- }
-
- /**
- * 设置多个key-value,逗号隔开,返回ok
- * @param keysValues
- * @return
- */
- public String mSet(String ... keysValues) {
- return jedis.mset(keysValues);
- }
-
- /**
- * 获取多个key的value,逗号隔开
- * @param keys
- * @return
- */
- public List<String> mGet(String ... keys) {
- return jedis.mget(keys);
- }
-
- /**
- * 在key不存在的时候为key设置值,当key存在的时候不会覆盖现有value,这是与set命令最本质的区别
- * @param key
- * @param value
- * @Return 0:error 1:ok
- */
- public Long setNx(String key, String value) {
- return jedis.setnx(key, value);
- }
-
- /**
- * 设置多个key-value,在key不存在的时候为key设置值,当key存在的时候不会覆盖现有value,逗号隔开
- * 说明:
- * 【
- * 1.当有1个key存在时,则直接返回0,所有的key都无法设置。
- * 】
- * @param keysValues
- * @return 0:error 1:ok
- */
- public Long mSetNx(String ... keysValues) {
- return jedis.msetnx(keysValues);
- }
-
- /**
- * 设置带有时效性的key-value,若key已存在,则会覆盖,并创建时效性。到设置的秒数自动删除key-value
- * @param key
- * @param seconds:秒
- * @param value
- * @return
- */
- public String setEx(String key, int seconds, String value) {
- return jedis.setex(key, seconds, value);
- }
-
- /**
- * 追加字符串
- * 说明:
- * 【
- * 当有key不存在时,相当于执行set key value操作
- * 】
- * @return 追加后的字符串长度
- */
- public Long append(String key, String value) {
- return jedis.append(key, value);
- }
-
- /**
- * 返回key对应的字符串的长度,若key不存在则返回0
- * @param key
- * @return
- */
- public Long strLen(String key) {
- return jedis.strlen(key);
- }
- /**
- * 对value进行++操作
- * 说明:
- * 【
- * 1.当有key不存在时,相当于执行set key 0操作,自动为key默认为0,在执行++操作
- * 2.当key存在时,进行key ++操作
- * 3.如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
- * 】
- * @param key
- * @return
- */
- public Long incr(String key) {
- return jedis.incr(key);
- }
- /**
- * 对value进行+num操作
- * 说明:
- * 【
- * 1.当有key不存在时,相当于执行set key 0操作,自动为key默认为0,在执行+num操作
- * 2.当key存在时,进行key +num操作
- * 3.如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
- * 】
- * @param key
- * @return
- */
- public Long incrBy(String key, int num) {
- return jedis.incrBy(key, num);
- }
-
- /**
- * 对value进行--操作
- * 说明:
- * 【
- * 1.当有key不存在时,相当于执行set key 0操作,自动为key默认为0,在执行--操作
- * 2.当key存在时,进行key --操作
- * 3.如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
- * 】
- * @param key
- * @return
- */
- public Long decr(String key) {
- return jedis.decr(key);
- }
- /**
- * 对value进行-num操作
- * 说明:
- * 【
- * 1.当有key不存在时,相当于执行set key 0操作,自动为key默认为0,在执行-num操作
- * 2.当key存在时,进行key -num操作
- * 3.如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
- * 】
- * @param key
- * @return
- */
- public Long decrBy(String key, int num) {
- return jedis.decrBy(key, num);
- }
-
- public static void main(String[] args) {
- //选择db
- RedisClient redisClient = new RedisClient();
- TestString test = new TestString();
- // test.set("name", "chentw@163.com");
- // System.out.println(test.get("name"));
- // test.del("name");
- // System.out.println(test.getRange("name", 0, -11));
- // System.out.println(test.getRange("name", -5, -1));
- // System.out.println(test.setRange("key1", 5, "value"));
- // System.out.println(test.getSet("name", "TongWei.Chen@163.com"));
- // System.out.println(test.mSet("key1", "value1", "key2", "value2", "key3", "value3"));
- // System.out.println(test.mGet("key1", "key2"));
- // System.out.println(test.setNx("key11", "value11"));
- // System.out.println(test.setEx("key1", 10, "value"));
- // System.out.println(test.strLen("key1"));
- // System.out.println(test.mSetNx("k1", "v1", "k2", "v2", "name", "nameValue"));
- // System.out.println(test.append("key1", "test"));
- // System.out.println(test.incr("age"));
- // System.out.println(test.incrBy("age", -10));
- // System.out.println(test.decr("age"));
- // System.out.println(test.decrBy("age", -10));
- }
- }
|
免费评分
-
查看全部评分
|