Redis相关命令及Jedis的demo(转)

连接操作相关的命令

  • quit:关闭连接(connection)
  • auth:简单密码认证

持久化

  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务

远程服务控制

  • info:提供服务器的信息和统计
  • monitor:实时转储收到的请求
  • slaveof:改变复制策略设置
  • config:在运行时配置Redis服务器

对value操作的命令

  • exists(key):确认一个key是否存在
  • del(key):删除一个key
  • type(key):返回值的类型
  • keys(pattern):返回满足给定pattern的所有key
  • randomkey:随机返回key空间的一个
  • keyrename(oldname, newname):重命名key
  • dbsize:返回当前数据库中key的数目
  • expire:设定一个key的活动时间(s)
  • ttl:获得一个key的活动时间
  • select(index):按索引查询
  • move(key, dbindex):移动当前数据库中的key到dbindex数据库
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库中的所有key

对String操作的命令

  • set(key, value):给数据库中名称为key的string赋予值value
  • get(key):返回数据库中名称为key的string的value
  • getset(key, value):给名称为key的string赋予上一次的value
  • mget(key1, key2,…, key N):返回库中多个string的value
  • setnx(key, value):添加string,名称为key,值为value
  • setex(key, time, value):向库中添加string,设定过期时间time
  • mset(key N, value N):批量设置多个string的值
  • msetnx(key N, value N):如果所有名称为key i的string都不存在
  • incr(key):名称为key的string增1操作
  • incrby(key, integer):名称为key的string增加integer
  • decr(key):名称为key的string减1操作
  • decrby(key, integer):名称为key的string减少integer
  • append(key, value):名称为key的string的值附加value
  • substr(key, start, end):返回名称为key的string的value的子串

对List操作的命令

  • rpush(key, value):在名称为key的list尾添加一个值为value的元素
  • lpush(key, value):在名称为key的list头添加一个值为value的 元素
  • llen(key):返回名称为key的list的长度
  • lrange(key, start, end):返回名称为key的list中start至end之间的元素
  • ltrim(key, start, end):截取名称为key的list
  • lindex(key, index):返回名称为key的list中index位置的元素
  • lset(key, index, value):给名称为key的list中index位置的元素赋值
  • lrem(key, count, value):删除count个key的list中值为value的元素
  • lpop(key):返回并删除名称为key的list中的首元素
  • rpop(key):返回并删除名称为key的list中的尾元素
  • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。
  • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

对Set操作的命令

  • sadd(key, member):向名称为key的set中添加元素member
  • srem(key, member) :删除名称为key的set中的元素member
  • spop(key) :随机返回并删除名称为key的set中一个元素
  • smove(srckey, dstkey, member) :移到集合元素
  • scard(key) :返回名称为key的set的基数
  • sismember(key, member) :member是否是名称为key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
  • sunion(key1, (keys)) :求并集
  • sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
  • sdiff(key1, (keys)) :求差集
  • sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
  • smembers(key) :返回名称为key的set的所有元素
  • srandmember(key) :随机返回名称为key的set的一个元素

对Hash操作的命令

  • hset(key, field, value):向名称为key的hash中添加元素field
  • hget(key, field):返回名称为key的hash中field对应的value
  • hmget(key, (fields)):返回名称为key的hash中field i对应的value
  • hmset(key, (fields)):向名称为key的hash中添加元素field
  • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
  • hexists(key, field):名称为key的hash中是否存在键为field的域
  • hdel(key, field):删除名称为key的hash中键为field的域
  • hlen(key):返回名称为key的hash中元素个数
  • hkeys(key):返回名称为key的hash中所有键
  • hvals(key):返回名称为key的hash中所有键对应的value
  • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

http://www.cnblogs.com/liuling/p/2014-4-19-03.html

使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip

如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip

  1 package com.test;
  2
  3 import java.util.HashMap;
  4 import java.util.Iterator;
  5 import java.util.List;
  6 import java.util.Map;
  7
  8 import org.junit.Before;
  9 import org.junit.Test;
 10
 11 import redis.clients.jedis.Jedis;
 12
 13 public class TestRedis {
 14     private Jedis jedis;
 15
 16     @Before
 17     public void setup() {
 18         //连接redis服务器,192.168.0.100:6379
 19         jedis = new Jedis("192.168.0.100", 6379);
 20         //权限认证
 21         jedis.auth("admin");
 22     }
 23
 24     /**
 25      * redis存储字符串
 26      */
 27     @Test
 28     public void testString() {
 29         //-----添加数据----------
 30         jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin
 31         System.out.println(jedis.get("name"));//执行结果:xinxin
 32
 33         jedis.append("name", " is my lover"); //拼接
 34         System.out.println(jedis.get("name"));
 35
 36         jedis.del("name");  //删除某个键
 37         System.out.println(jedis.get("name"));
 38         //设置多个键值对
 39         jedis.mset("name","liuling","age","23","qq","476777XXX");
 40         jedis.incr("age"); //进行加1操作
 41         System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
 42
 43     }
 44
 45     /**
 46      * redis操作Map
 47      */
 48     @Test
 49     public void testMap() {
 50         //-----添加数据----------
 51         Map<String, String> map = new HashMap<String, String>();
 52         map.put("name", "xinxin");
 53         map.put("age", "22");
 54         map.put("qq", "123456");
 55         jedis.hmset("user",map);
 56         //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
 57         //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
 58         List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
 59         System.out.println(rsmap);
 60
 61         //删除map中的某个键值
 62         jedis.hdel("user","age");
 63         System.out.println(jedis.hmget("user", "age")); //因为删除了,所以返回的是null
 64         System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数2
 65         System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true
 66         System.out.println(jedis.hkeys("user"));//返回map对象中的所有key
 67         System.out.println(jedis.hvals("user"));//返回map对象中的所有value
 68
 69         Iterator<String> iter=jedis.hkeys("user").iterator();
 70         while (iter.hasNext()){
 71             String key = iter.next();
 72             System.out.println(key+":"+jedis.hmget("user",key));
 73         }
 74     }
 75
 76     /**
 77      * jedis操作List
 78      */
 79     @Test
 80     public void testList(){
 81         //开始前,先移除所有的内容
 82         jedis.del("java framework");
 83         System.out.println(jedis.lrange("java framework",0,-1));
 84         //先向key java framework中存放三条数据
 85         jedis.lpush("java framework","spring");
 86         jedis.lpush("java framework","struts");
 87         jedis.lpush("java framework","hibernate");
 88         //再取出所有数据jedis.lrange是按范围取出,
 89         // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
 90         System.out.println(jedis.lrange("java framework",0,-1));
 91
 92         jedis.del("java framework");
 93         jedis.rpush("java framework","spring");
 94         jedis.rpush("java framework","struts");
 95         jedis.rpush("java framework","hibernate");
 96         System.out.println(jedis.lrange("java framework",0,-1));
 97     }
 98
 99     /**
100      * jedis操作Set
101      */
102     @Test
103     public void testSet(){
104         //添加
105         jedis.sadd("user","liuling");
106         jedis.sadd("user","xinxin");
107         jedis.sadd("user","ling");
108         jedis.sadd("user","zhangxinxin");
109         jedis.sadd("user","who");
110         //移除noname
111         jedis.srem("user","who");
112         System.out.println(jedis.smembers("user"));//获取所有加入的value
113         System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素
114         System.out.println(jedis.srandmember("user"));
115         System.out.println(jedis.scard("user"));//返回集合的元素个数
116     }
117
118     @Test
119     public void test() throws InterruptedException {
120         //jedis 排序
121         //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
122         jedis.del("a");//先清除数据,再加入数据进行测试
123         jedis.rpush("a", "1");
124         jedis.lpush("a","6");
125         jedis.lpush("a","3");
126         jedis.lpush("a","9");
127         System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
128         System.out.println(jedis.sort("a")); //[1, 3, 6, 9]  //输入排序后结果
129         System.out.println(jedis.lrange("a",0,-1));
130     }
131
132     @Test
133     public void testRedisPool() {
134         RedisUtil.getJedis().set("newname", "中文测试");
135         System.out.println(RedisUtil.getJedis().get("newname"));
136     }
137 }

Redis连接池:

 1 package com.test;
 2
 3 import redis.clients.jedis.Jedis;
 4 import redis.clients.jedis.JedisPool;
 5 import redis.clients.jedis.JedisPoolConfig;
 6
 7 public final class RedisUtil {
 8
 9     //Redis服务器IP
10     private static String ADDR = "192.168.0.100";
11
12     //Redis的端口号
13     private static int PORT = 6379;
14
15     //访问密码
16     private static String AUTH = "admin";
17
18     //可用连接实例的最大数目,默认值为8;
19     //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
20     private static int MAX_ACTIVE = 1024;
21
22     //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
23     private static int MAX_IDLE = 200;
24
25     //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
26     private static int MAX_WAIT = 10000;
27
28     private static int TIMEOUT = 10000;
29
30     //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
31     private static boolean TEST_ON_BORROW = true;
32
33     private static JedisPool jedisPool = null;
34
35     /**
36      * 初始化Redis连接池
37      */
38     static {
39         try {
40             JedisPoolConfig config = new JedisPoolConfig();
41             config.setMaxActive(MAX_ACTIVE);
42             config.setMaxIdle(MAX_IDLE);
43             config.setMaxWait(MAX_WAIT);
44             config.setTestOnBorrow(TEST_ON_BORROW);
45             jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
46         } catch (Exception e) {
47             e.printStackTrace();
48         }
49     }
50
51     /**
52      * 获取Jedis实例
53      * @return
54      */
55     public synchronized static Jedis getJedis() {
56         try {
57             if (jedisPool != null) {
58                 Jedis resource = jedisPool.getResource();
59                 return resource;
60             } else {
61                 return null;
62             }
63         } catch (Exception e) {
64             e.printStackTrace();
65             return null;
66         }
67     }
68
69     /**
70      * 释放jedis资源
71      * @param jedis
72      */
73     public static void returnResource(final Jedis jedis) {
74         if (jedis != null) {
75             jedisPool.returnResource(jedis);
76         }
77     }
78 }

http://www.cnblogs.com/liuling/p/2014-4-19-04.html

时间: 2024-10-11 17:02:35

Redis相关命令及Jedis的demo(转)的相关文章

redis相关命令

src/redis-server /home/redis/6380/   后面的目录是自己在配置文件中配置的,配置文件的位置就是在这个目录下 tail -f /home/redis/6380/myredis.log  目录和.log文件的文件名可以在配置文件中自行配置 tail -f /home/redis/6380/appendonly.aof  当你开启这个线程,在这个线程down之前的所有执行过的命令这里有记录 /usr/etc/redis-3.0.5/src/redis-cli -p 6

redis 相关命令

/etc/init.d/redis-serveredis-cli 进入redis/etc/init.d/redis-server stop /etc/init.d/redis-server start /etc/init.d/redis-server restartkill -9 netstat -an | grep 6379 查看端口状态netstat -anp 查看所有端口状态

redis 从0 到 1 键值相关命令 服务器相关命令

keys * 获取所有的key   忽略其数据类型 数据为空   返回(empty list or set) keys a* .*b 获取以a开头 或者 以b结尾的key 返回(empty list or set) exists key 判断key是否存在   存在返回1  不存在返回0 del key 删除key   返回 受影响key的个数 expire key seconds  设置key的过期时间 单位为秒 persist  key   消除key的过期时间设置 move key db

redis cluster (2) 相关命令参考及慢查询

实例关闭命令 redid-cli  shutdown  说明:关闭时强制 bgsave 所以需要一些时间    注:在start时,需要先加载数据到内存,数据加载完毕之后 redis 才会listen 端口 集群相关命令 1.CLUSTER INFO 打印集群的信息   2.CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息.  3.CLUSTER FAILOVER 手动故障转移,需要在转移的主节点的从节点上执行 节点 相关命令 1.CLUSTER MEE

[Redis]Redis的五种数据类型与键值/服务器相关命令

-------------------------------------------------------------------------------------- String(字符串):最简单的数据类型. set age 18 ( set age 18 ex 5 ) # 设置过期时间5秒 setex age 5 18   # 效果同上, 使用 ttl age 可以查看剩余有效时间 psetex age 5000 18  # 同上,只是以毫秒为单位设置key的过期时间 ( set ag

redis 键值相关命令

键值相关命令 keys *   返回所有的键  keys my* exists mykey1 是否存在mykey1键 del mykey 删除mykey键 expire mykey 10 设置mykey键过期时间为10秒 ttl mykey 得到mykey的过期时间(不断变化),-1 表示已经过期,过期则被销毁掉 ,如果没设置过期时间,默认就是-1 redis 默认16个数据库,从0-15. 默认为0数据库 select 1 选择1 数据库 move age 1 将age移到1数据库 persi

redis 服务器相关命令

服务器相关命令 ping 输出pong 代表有响应 pkill redis-server 杀掉redis echo 123456 输出命令 quit 退出连接 dbsize 返回数据库中键的个数 info 获取服务器的信息和统计 config get * 返回所有配置的相关信息 config get maxmemory 返回配置参数maxmemory 的配置信息 flushdb删除当前数据库中的所有key flushall 删除所有数据库中的所有key

05_NoSQL数据库之Redis数据库:Redis的常用命令,键值相关命令和服务器相关命令

 Redis常用命令 Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以再Linux终端使用. 键值相关命令: Keys:返回满足给定pattern的所有key 用表达式*表示取出所有的key 127.0.0.1:6379> keys * 1) "age" 2) "name" 3) "age2" 127.0.0.1:6379> keys a* 1) "age" 2) "age2&

Redis常用命令手册:键值相关命令

Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一总结. 键值相关命令 1.keys 返回满足给定pattern的所有key: redis 127.0.0.1:6379> keys * 1) "myzset2" 2) "myzset3" 3) "mylist" 4) "myset2&