一 redis的命令操作

      MySql、Oracle等关系型数据库我们一般都通过SQL语句对数据进行操作,但是非关系型数据库没有SQL(NOSQL),我们一般都是通过相应的客户端命令进行数据操作。

1.key

命令

描述

keys *

查询当前库的所有键

exists <key>

判断某个键是否存在

type <key>

查看键的类型

del <key>

删除某个键

expire <key> <seconds>

为键值设置过期时间,单位秒。

ttl <key>

查看还有多少秒过期,-1表示永不过期,-2表示已过期

dbsize

查看当前数据库的key的数量

flushdb

清空当前库

flushall

通杀全部库

获取当前键的所有key值:  

      命令:keys *

java redis 使用 java redis用法_字符串

判断某个键是否存在 :       exists <key>

java redis 使用 java redis用法_redis_02

查看键的数据类型

java redis 使用 java redis用法_redis_03

为键值设置过期时间:expire <key> <seconds>

查看还有多少秒过期,-1表示永不过期,-2表示已过期:   ttl <key>

java redis 使用 java redis用法_偏移量_04

java redis 使用 java redis用法_jedis_05

2 String

命令

描述

get <key>

查询指定键对应的值

set <key> <value>

添加键值对

append <key> <value>

将给定的value追加到原值的末尾

strlen <key>

获得值的长度

setnx <key> <value>

只有在 key 不存在时设置 key 的值

incr <key>

将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1

decr <key>

将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1

incrby / decrby <key> <step>

将 key 中储存的数字值增减。自定义步长(增幅)。

mset <key1> <value1> <key2> <value2> ······

同时设置一个或多个 key-value对。

mget <key1> <key2> <key3> ······

同时获取一个或多个 value。

msetnx <key1> <value1> <key2> <value2> ······

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

getrange <key> <start> <end>

获得值的范围,类似java中的substring。

setrange <key> <start> <value>

用value覆写key所储存的字符串值,从起始位置开始。 SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充

setex <key> <expire> <value>

设置键值的同时,设置过期时间,单位秒。

getset <key> <value>

以新换旧,设置了新值同时获得旧值。

java redis 使用 java redis用法_字符串_06

同时设置一个或多个 key-value对    同时获取一个或多个 value。

java redis 使用 java redis用法_redis_07

1) 获得值的范围,类似java中的substring :    getrange <key> <start> <end>

2) 用value覆写key所储存的字符串值,从起始位置开始。 SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充 :   setrange <key> <start> <value>

java redis 使用 java redis用法_偏移量_08

设置键值的同时设置过期时间

java redis 使用 java redis用法_redis_09

以新换旧:设置新值的同时获取旧值

java redis 使用 java redis用法_redis_10

3 list

命令

描述

lpush/rpush <key> <value1> <value2> <value3> ······

从左边/右边插入一个或多个值

lpop/rpop <key>

从左边/右边吐出一个值, 值在键在,值光键亡。

rpoplpush <key1> <key2>

从key1列表右边吐出一个值,插到key2列表左边

lrange <key> <index><end>

按照索引下标获得一段元素(从到左)

lindex <key> <index>

按照索引下标获得对应的单个元素(从右到左)

llen <key>

获得列表长度

linsert <key> before|after <value> <newvalue>

在value的前面(后面)插入newvalue插入值

lrem <key> <n> <value>

从左边删除n个value(从左到右)

 

java redis 使用 java redis用法_字符串_11

java redis 使用 java redis用法_redis_12

4 set

命令

描述

sadd <key> <value1> <value2> <value3> ······

将一个或多个元素加入到集合 key 当中,已经存在于集合的元素将被忽略。

smembers <key>

取出该集合的所有值。

sismember <key> <value>

判断集合key是否为含有该value值,有返回1,没有返回0

srem <key> <value1> <value2> ······

删除集合中的某个元素。

spop <key>

随机从该集合中吐出一个值

srandmember <key> <n>

随机从该集合中取出n个值。不会从集合中删除

sinter <key1> <key2>

返回两个集合的交集元素。

sunion <key1> <key2>

返回两个集合的并集元素

sdiff <key1> <key2>

返回两个集合的差集元素。

java redis 使用 java redis用法_字符串_13

java redis 使用 java redis用法_jedis_14

5 hash

命令

描述

hset <key> <field> <value>

给key集合中的field键赋值value。

hget <key1> <field>

从key1集合field取出value。

hmset <key1> <field1> <value1> <field2> <value2>

批量设置hash的值

hexists <key> <field>

查看哈希表 key 中,给定域 field 是否存在。

hkeys <key>

列出该hash集合的所有field

hvals <key>

列出该hash集合的所有value

hincrby <key> <field> <increment>

为哈希表 key 中的域 field 的值加上增量 increment。

hsetnx <key> <field> <value>

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

java redis 使用 java redis用法_字符串_15

6 zset

命令

描述

zadd <key> <score1> <value1> <score2> <value2>

将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

zrange <key> <start> <stop> [ WITHSCORES ]

返回有序集 key 中,下标在start,stop之间的元素, 带WITHSCORES,可以让分数一起和值返回到结果集.

zrangebyscore <key> <min> <max> WITHSCORES

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

zrevrangebyscore <key> <max> <min> WITHSCORES

同上,改为从大到小排列.

zincrby <key> <increment> <value>

为元素的score加上增量

zrem <key> <value>

删除该集合下,指定值的元素

zcount <key> <min> <max>

统计该集合,分数区间内的元素个数

zrank <key> <value>

返回该值在集合中的排名,从0开始。

二  JavaAPI操作Redis

   Java操作Redis这个技术叫Jedis

注:1)使用之前记住需要关闭防火墙    

java redis 使用 java redis用法_redis_16

2)

java redis 使用 java redis用法_jedis_17

3)连接之前要保证redis服务器端开启

4.1、环境准备

     使用eclipse操作,需要导入两个jar包:     commons-pool-1.6.jar和jedis-3.0.1.jar

4.2、建立连接

注意:redis配置文件中有bind 绑定IP,我们可以将这个配置注释掉(上边的图片),注释掉之后就是所有的电脑都可以连接上来。

          打印PONG说明连接成功

java redis 使用 java redis用法_字符串_18

4.3 操作

import org.junit.Test;

import redis.clients.jedis.Jedis;

public class JedisTest {

	@Test
	public void testString() {
	//java操作redis我们需要使用Jedis对象
	//连接本地redis服务
	Jedis jedis=new Jedis("192.168.132.101",6379);
	//jedis.auth("123");   //有密码时需要加入密码
	//查看服务是否运行    打印PONG说明连接成功
	System.out.println(jedis.ping());





}


}

     后边的操作都针对与此

(1 )key 操作

(2)String操作

//String操作
	jedis.set("k1","nihao");
	System.out.println(jedis.get("k1"));
	System.out.println("----------------------------------------");
	jedis.mset("k2","hello","k3","tom");
	System.out.println(jedis.mget("k1","k2","k3"));

 (3) set操作

//set操作
	jedis.sadd("set1", "huanying");
	jedis.sadd("set01", "nihao","hello","tom","nihao","amy");
	//取出该集合中的所有值
	Set<String> s1 = jedis.smembers("set01");   
	for (String string : s1) {
		System.out.println(string);
	}
	
		//和上边操作一样
		  for (Iterator iterator = s1.iterator(); iterator.hasNext();) { 
			  String string = (String) iterator.next(); 
			  System.out.println("---------------"+string); }
	
	
	jedis.srem("set01","amy");//删除集合中的某个元素。

(4)list操作

//list操作	
	jedis.lpush("k22", "pp aa cc","sazd","oo","yy","oo");
	List<String> list=jedis.lrange("k22", 0, 2);  //结果:oo  yy oo 
	for (String element : list) {
		System.out.println(element);
	}

(5)Hash操作

//hash操作
	jedis.hset("hash1", "username", "Tom");
	System.out.println("++++++"+jedis.hget("hash1", "username"));
	
	Map map=new HashMap();
	map.put("telephone","18833011104");
	map.put("address", "tianjin");
	map.put("email", "2234@163.com");
	jedis.hset("hash2", map);
	List result=jedis.hmget("hash2", "telephone","email");
	for (Object object : result) {
		System.out.println("-------"+object);
	}

java redis 使用 java redis用法_System_19

(6) zset操作

//zset操作	
	//格式:jedis.zadd(key, score, value)
	jedis.zadd("zset1", 78.2, "amy");
	jedis.zadd("zset1", 81, "tom");
	jedis.zadd("zset1", 27.6, "hello");
	jedis.zadd("zset1", 79, "baibai");
	//获取key值下的所有值
	Set s=jedis.zrange("zset1", 0, -1);
	for (Object object : s) {
		System.out.println("-----"+object);
	}
	for (Iterator iterator = s.iterator(); iterator.hasNext();) {
		  String string = (String) iterator.next();
		  System.out.println("++++"+string);
		}

java redis 使用 java redis用法_字符串_20