redis数据类型语法及与java连接

   redis数据类型:

  1、String类型:

  1)设置键值对:set key value (=>是返回的内容)

    示例:set name liu  =>ok

  2)通过键获取值:get key

    示例:get name    =>liu

  3)判断键是否存在:exists key

    示例:exists name =>  <integer>1

  4)删除键值对:del key

    示例:del name =>  <integer>1

  5)设置键值对的生命周期:expire key seconds

    示例:expire name 5 =>  <integer>1  //5秒后name消失

  6)模糊查询:keys patern(*统配N个字符,?统配1个字符,意思就是*代表N个字符,?代表1个字符,类似mysql数据库模糊查询)查出来的是键

    示例:keys *a*   =>name

       keys ?ame  =>name

  7)序列化对象:dump key 

    示例:dump name

  8)截取字符串:getrange key start end  类似java 截取字符串,从start 索引开始,截取到end索引。

    示例: getrange name 1 2  =>iu

  2、哈希Hash类型

  1)设置:hmset key field value [field value]相当于设置java的类的实例化对象 ,key:对象名字,field :字段,value:字段的值,如果key已经存在,就是追加字段。

    示例:hmset user name liu age 18  =>ok

  2)获取一个字段的值: hget key field 

    示例:hget user name  =>"liu"

  3)获取多个字段的值:hmget key field [field]

    示例:hmget user name age  =>"liu" "18"

  4)获取所有字段,包括键和值 hgetall key

    示例:hgetall user  =>"name" "liu" "age" "18"

  5)删除某些字段:hdel key field[field]

    示例:hdel user age  =>  <integer>1

  6)是否存在字段:hexists key field

    示例:hexists user age  =>  <integer>0

  7)获取所有字段的名字,不包括值:hkeys key

    示例:hkeys user  =>"name"

  8)获取所有字段的值,不包括字段的名字:hvals key

    示例:hvals user  => "liu"

  3、列表List类型

  1)前追加:lpush key value [value]  //在key 列表最前面添加一个value

    示例:lpush lessons css  => <integer>1       //在lessons最前面添加css

  2)后追加:rpush key value [value]  //在列表后添加value

    示例:lpush lessons java  => <integer>2

  3)范围获取:lrange key start stop  //从start索引到stop索引结束获得列表

    示例:lrange lessons 0 100  =>"css" "java"

  4)指定索引获取:lindex key index

    示例:lindex lessons 0  => "css"

  5)插入元素:linsert key before|after pivot value

    示例:linsert lessons before java html  => <integer>3

       linsert lessons after css sql  =><integer>4

  6)前移除:lpop key

    示例:lpop lessons  =>css  //把lessons的第一个元素移除

  7)后移除:rpop key

    示例:rpop lessons  =>java  //把lessons的最后一个元素移除

  8)范围移除:ltrim key start stop

    示例:ltrim lessons 2 3  =>ok  //只保留start索引到stop索引范围的元素把其他的删掉

  9)移除元素:lrem key count value

    示例:lrem lessons 1 java  =>html  //移除索引1的java,需要指定索引和值

  10)修改某个索引的值:lset key index value

    示例:lset lessons 0 mysql  =>ok  //把0索引原来的值sql改为mysql

  4、集合Set,和List区别是一个没有索引,一个有索引

    1)添加元素:sadd key member[member]  //设置一个set的集合,里面的元素为member

    示例:sadd java javase html css js sql javaee  => <integer>6

       sadd web html css js jQuery easyui angularjs  => <integer>6

    2)获取元素:smembers key  

    示例:smembers java  => html css js sql javaee javase  //返回的元素无序。

    3)获取长度:scard key

    示例:scard java  => <integer>6 

    4)获取集合交集:sinter key [key]

    示例:sinter java web  =>js css html

    5)获取交集保存:sinterstore storekey key [key] 

    示例:sinterstore jiaoji java web  => <integer>3  //将java和web相同的部分保存在一个set中。

    6)获取集合差值:sdiff key [key]  //注意,两个key的前后顺序不同,返回的结果不同,返回的是第一个集合中有但第二个集合中没有的元素

    示例:sdiff java web  =>sql javaee javase

       sdiff web java  =>angularjs jQuery easyui

    7)获取差值保存:sdiffstore storekey key [key]  //将获取的差值保存在一个集合中。

    示例:sdiffstore javadiff java web  => <integer>3

    8)获取集合并集:sunion key [key]

    示例:sunion java web =>  javase html css js sql javaee angularjs jQuery easyui   //获取java和web的并集

    9)获取并集保存:sunionstore storekey key [key]

    示例:sunionstore javaweb java web  => <integer>9  //将并集保存在javaweb集合中。

    10)获取随机元素:srandmember key [count]

    示例:srandmember java  =>sql  //随机取一个元素

       srandmember java 2  =>sql js   //写count为随机取几个元素。

    11)移动元素:smove source destination member

    示例:smove web java easyui  => <integer>1  //把web集合中的easyui元素移动到java中

    12)移除随机元素:spop key [count]

    示例:spop java  =>javase  //随机删除一个元素

         spop java 2    //随机移除几个元素

    13)移除指定元素:srem key member [member]

    示例:srem java js css  => easyui javaee sql html javase

  5、有序集合:Sorted Set  其实就是{(91,javase),(92,javaee),(93,css),(94,js)}这样的键值对集合。

    1)ZADD key score1 member1 [score2 member2]  //向有序集合添加一个或多个成员,或者更新已存在成员的分数。

    示例: zadd lessons 91 javase 92 html 93 css 94 js 95 sql 96 javaee  => <integer>6

    2)ZINCRBY key increment member  //有序集合中对指定成员的分数加上增量increment

    示例:zincrby lessons 100 javaee  => 196

    3)ZRANGE key start stop [WITHSCORES]  //通过索引区间返回有序集合成指定区间内的成员

    示例:zrange lessons 0 1  => javase html

    4)ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]  //通过分数返回有序集合指定区间内的成员

    示例:zrangebyscore bwf 101 196  =>javaee  //因为刚才把javaee的分数改为了196

    5)ZCARD key  //获取有序集合的成员个数。

    示例:zcard lessons  => <integer>6

    6)ZCOUNT key min max  //计算在有序集合指定区间分数的成员数。

    示例:zcount lessons 0 200  => <integer>6

    7)ZRANGE key start stop  //获取有序集合中的所有元素

    示例:zrange lessons 0 5  => 1)javase 2)html 3)css 4)js 5)sql 6)javase

 

  java连接redis

  1)maven项目中,添加redis依赖:

  <dependency>

    <groudId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>2.9.0</version>

  </dependency>

  2)实例化Jedis对象,在主方法中:

    Jedis jedis= new Jedis("192.168.1.101",6379);  //IP地址瞎写的,本机地址。

    

  3)测试连接

    //验证密码,abc123是密码,瞎写的:

    jedis.auth("abc123")

    System.out.println(jedis.ping());

    控制台输出PONG,表示连接成功。如果不成功,按以下操作:

  a)关闭防火墙

    service iptables stop

    chkconfig iptables off

  b)关闭进程守护模式 redis.conf配置文件中protected-mode no

  c)设置任何ip均可访问redis.conf配置文件中 bind 0.0.0.0

  d)设置redis密码 config set requirepass xxx

  e)重启redis服务

    ./redis-cli shutdown      //前面有个点

    ./src/redis-server ./redis.conf  //有3个点

  代码:

  

import java.util.HashMap;
import java.util.Map;

import redis.clients.jedis.Jedis;

public class redis {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Jedis jedis=new Jedis("192.168.2.104",6379);
		System.out.println(jedis.ping());
		//设置字符串数据
		jedis.set("name","liu");
		//设置hashmap数据
		Map<String,String>map=new HashMap<String,String>();
		map.put("name", "刘一");
		map.put("age", "20");
		jedis.hmset("user1", map);
		//设置列表List
		jedis.lpush("lessonsss","javase","html","css","js","javaee");
		//设置set
		jedis.sadd("SSH", "Strus","Spring","Hibernate");
		//设置Sorted Set
		Map<String,Double>map1=new HashMap<String, Double>();
		map1.put("SpringMVC", 90d);
		map1.put("Spring", 91d);
		map1.put("MyBatis", 92d);
		jedis.zadd("SSM", map1);
		
		
		
		
		//获取字符串的数据
		System.out.println(jedis.get("name"));
		//获取map的数据 
		jedis.hgetAll("user1");
		for(Map.Entry<String, String> member:jedis.hgetAll("user1").entrySet()){
			System.out.println(member.getKey()+member.getValue());
		}
		//获取列表List的数据
		for(String number:jedis.lrange("lessonsss", 0, 100)){
			System.out.println(number);
		}
		
		//获取set数据
		for(String member:jedis.smembers("SSH")){
			System.out.println(member);
		}
		
		//获取Sorted Set数据
		for(String member:jedis.zrange("SSM",0,100)){
			System.out.println(member);
		}
	}

}

  

 

转载于:https://www.cnblogs.com/sunwenhao01/p/10022523.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值