博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis - java 客户端使用
阅读量:6213 次
发布时间:2019-06-21

本文共 4755 字,大约阅读时间需要 15 分钟。

hot3.png

命令参考:  

教程:  

 

1.准备.下载jar 包

 

  <dependency>

               <groupId>redis.clients</groupId>

               <artifactId>jedis</artifactId>

               <version>2.7.3</version>

          </dependency>

<dependency>

     <groupId>org.apache.commons</groupId>

     <artifactId>commons-pool2</artifactId>

     <version>2.4.2</version>

</dependency>

    java 客户端还有: Redis4j , jedis , jRedis ,   

2. 示例

 

package redisDemo;

 

import redis.clients.jedis.Jedis;

 

public class Test1 {

      public static void main(String[] args) {

          //连接

          Jedis jedis = new Jedis( "127.0.0.1",6379);

          //存值

          jedis.set( "foo", "bar"); 

          //取值

          String foo = jedis.get( "foo");

          //删除

          jedis.del( "foo");

         

      }

}

 

 

1. Jeids 连接

1. 简单连接

 

Jedis jedis = new Jedis( "127.0.0.1",6379);

2. 使用连接池连接 redis( 依赖 apache 下的 common-pool2.jar包)

 

// 读取配置文件,redis.properties(如:redisDemo.redis这样表示在redisDemo包下)

ResourceBundle bundle = ResourceBundle.getBundle("redis" );

// 设置配置对象

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxTotal(Integer. valueOf(bundle.getString("redis.pool.maxActive")));

config.setMaxIdle(Integer. valueOf(bundle.getString("redis.pool.maxIdle")));

config.setMaxWaitMillis(Long. valueOf(bundle.getString("redis.pool.maxWait")));

config.setTestOnBorrow(Boolean. valueOf(bundle.getString("redis.pool.testOnBorrow")));

config.setTestOnReturn(Boolean. valueOf(bundle.getString("redis.pool.testOnReturn")));

// 创建连接池

JedisPool jedisPool = new JedisPool( config, bundle.getString( "redis.ip"),

            Integer. valueOf(bundle.getString("redis.port")));

// 从连接池中取得对象

Jedis jedis = jedisPool .getResource();

jedis.get( "foo");

// 释放对象

jedis.close();

 

3. 创建共享连接,让多台redis同步

 

//准备两个共享的 redis服务器

JedisShardInfo jedisShardInfo1 = new JedisShardInfo( "192.168.0.1",6379); 

JedisShardInfo jedisShardInfo2 = new JedisShardInfo( "192.168.0.2",6379);

List<JedisShardInfo> list = new ArrayList<JedisShardInfo>(); 

list.add( jedisShardInfo1); 

list.add( jedisShardInfo2); 

 

JedisPoolConfig config = new JedisPoolConfig();

// config.set....

//创建共享池

ShardedJedisPool shardedPool = new ShardedJedisPool( config, list);

//创建共享对象

ShardedJedis jedis = shardedPool.getResource(); 

//crud ....

 

2.存值

 

1. 单值保存

   

jedis.set("foo","bar");

2.  内容追加

 

jedis.append("foo", "appendValue");

3. 多值保存

 

/**

* mset 相当于

* jedis.set("name","minxr");

* jedis.set("jarorwar","闵晓荣");

*/

jedis.mset( "name", "minxr", "jarorwar", "闵晓荣");           

System.out.println(jedis.mget("name","jarorwar"));

 

4. 保存map

 

 Map<String, String> user = new HashMap<>();

 user.put( "name", "mary");

 user.put( "age", "35");

 jedis.hmset( "mary", user);

 

5. 保存 list

 

//先向list中存放二条数据

jedis.lpush("list","spring");

jedis.lpush("list","struts");

 

6. 保存set

 

//保存值【minxr,jarorwar】到set中,key 为【sname】

jedis.sadd("sname","minxr");

jedis.sadd("sname","jarorwar"); 

 

3.取值

 

1. 取出单个值

 

String foo = jedis.get( "foo");

     

 

2.取出多个值以list返回

 

jedis.mget( "name","jarorwar" ) 

 

3.从map中取值

 

jedis.hmget("mary" , "age" ,"name" ) 以list返回

jedis.hlen("user") 计算map中存值的个数

jedis.exists("user" ); 是否存在该值

jedis.hkeys("user")  返回map对象中所有的key

jedis.hvals("user")   返回map对象中所有的value

 

4.从list中取值

 

//第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有

jedis.lrange("list",0,-1)

 

5.从set中取值

 

//获取所有加入的value

jedis.smembers("set") 

//判断minxr是否是sname集合的元素

jedis.sismember("set", "minxr")

//随机获取两个集合元素

jedis.srandmember("set",2)

//返回集合的元素个数

 jedis.scard("sname")

 

6.通过通配符取得

 

返回当前库中所有的key

jedis.keys("*") 或 jedis.keys("*name")

 

 

4.删除

1.删除单值

删除key为foo的对象,删除成功返回1 删除失败(或者不存在)返回 0

jedis.del( "foo");

2.从map中删除

 

//在"user"中的删除key为 pwd的对象

jedis.hdel( "user", "pwd");

3.从 set中删除

 

jedis.srem("set","minxr");

 

4.从list中删除

 

//根据参数 count 的值,移除列表中与参数 value 相等的元素。

jedis.lrem(key, count, value)

 

5.持久化与生存时间

 

 

//通过此方法,可以指定key的存活(有效时间) 时间为秒,下例设置:【timekey】的值为【min】且有效时间为<=10秒

jedis.setex("timekey", 10, "min");

 

//返回给定key的有效时间,如果是-1则表示永远有效

jedis.ttl("timekey ")

//以毫秒为单位获取剩余时间的到期键

jedis.pttl( "time");

 

//在不删除key的情况下,移除key的生存时间,让key重新成功一个【持久的】key

jedis.persist( "persistKey");

//时间是在Unix时间戳格式

jedis.expireAt( "unixTime", 1000L);

 

//设置【limitKey】的生存时间为10秒。或重新设定【limitKey】的生存时间为10秒

jedis.expire( "limitKey", 10);

 

 

 

6.订阅发布

 

订阅

【rchat】就是订阅的频道,可以指定多个,当运行了下面的程序后,就开启了一个线程并始终监听着指定的频道

jedis.subscribe(new JedisPubSub() {

      

      public void onMessage(String channel, String message) {

            System. out.println( message);

      }

      

}, "rchat" );

 

发布

//返回值表示订阅的人数,0表示没有人订阅    

jedis.publish( "rchat", "hello my name is jack");

 

控制台

hello my name is jack

 

7.备份

 

//备份当前数据,生成一个.rdb的文件

jedis.configGet( "dir");

jedis.bgsave();

 

8.恢复

 

要恢复Redis的数据只需移动 Redis 的备份文件(dump.rdb)到 Redis 目录,然后启动服务器

//为了得到你的 Redis 目录,使用配置命令         

jedis.configGet( "dir");

 

9.安全

 

为reids 设置密码,让相关的任何客户端都需要在执行命令之前进行身份验证

//默认情况下,此属性为空,表示没有设置密码

jedis.configGet( "requirepass");

//设置密码

jedis.configSet( "requirepass", "123456");

//设置密码,如果客户端运行命令没有验证,会提示(错误)NOAUTH,需要通过验证,通过下面取得权限

jedis.auth( "123456");

 

 

10.其它操作

 

 

//重命名key

jedis.rename("timekey","time")

//移动键到另一个数据库

jedis.move( "user", 1);

//返回存储在键的数据类型的值

jedis.type( "key");

转载于:https://my.oschina.net/u/2552286/blog/1572282

你可能感兴趣的文章
MySQL基础备忘(2)之视图
查看>>
reinterpret_cast 用法
查看>>
常见android手机分辨率(xxhdpi,xhdpi)
查看>>
js判断×××最后一位是否合法的方法的总结
查看>>
火星人谚语系列之三:正确的答案一定简单
查看>>
敏捷开发日常跟进系列之六:开发与跟进
查看>>
PPP协议
查看>>
老五和你一起看安全
查看>>
zabbix 3.2 配置阿里云钉钉报警
查看>>
70react_环境搭建_组件状态
查看>>
串口服务器调试步骤
查看>>
从“我爱我家”微活动,看微时代的“情感营销”
查看>>
“当当收店庆费一事”之我见
查看>>
“跑路风波”的内在缘由?P2P网络信贷将何去何从?
查看>>
41 mariadb日志文件、备份和恢复基础
查看>>
如何判断raid1中哪块硬盘损坏?
查看>>
Securecrt 在win7下 字体太少问题
查看>>
CentOS 7安装Nginx 1.10.2
查看>>
php生成导出Word、Excel、PowerPoint插件
查看>>
Virtual Machine Definition File 2.2
查看>>