package cn.com;

import java.text.ParseException;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
public class Redis_Key { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis /**
* 删除给定的一个或多个 key
* 不存在的 key 会被忽略
* */
public static void del(){
redis.set("name", "wangzhang");
Long size=redis.del("name");
Long size1=redis.del("name1");
System.out.println("存在key 删除:"+size);
System.out.println("不存在key 删除:"+size1);
System.out.println("====================");
redis.set("name", "wangzhang");
redis.set("id", "123456");
redis.set("address", "guangzhou"); Long size2=redis.del("name","id","address");
System.out.println("size2:"+size2); } /**
* 序列化给定 key,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键。
* 版本:>= 2.6.0
* 返回值:如果 key 不存在,那么返回 nil; 否则,返回序列化之后的值。
* */
public static void dump(){
redis.set("name", "wangzhang");
byte[] b=redis.dump("name");
System.out.println("b:"+b); byte [] c=redis.dump("name1");
System.out.println("c:"+c);
} /**
* RESTORE key ttl serialized-value
* key:保存序列化后的值存储对象; ttl:生命周期;serialized-value:序列化值
* 反序列化给定的序列化值,并将它和给定的 key 关联。
* 参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间。
* */
public static void restore(){
redis.flushDB();//清除数据
redis.set("name", "wangzhang"); //先序列化
byte [] b= redis.dump("name");
System.out.println("序列化之后:name:"+redis.get("name")); String operation=redis.restore("name2", 0,b);
System.out.println("反序列化之后:operation:"+operation);
System.out.println("反序列化之后:value:"+redis.get("name2"));
} /**
* 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
* */
public static void expire() throws InterruptedException{
redis.flushDB();//清除数据
redis.set("name", "100");
redis.expire("name", 2);
System.out.println(" "+redis.get("name"));
Thread.sleep(2000);
System.out.println("休眠两秒后:"+redis.get("name"));
} /**
* PEXPIREAT key milliseconds-timestamp
* 这个命令和 EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 EXPIREAT 那样,以秒为单位。
* 如果生存时间设置成功,返回 1 。
* 如果生存时间设置成功,返回 1 。
* 当 key 不存在或没办法设置生存时间,返回 0 。
* */
public static void pexpireAt() throws InterruptedException{
redis.flushDB();//清除数据
redis.set("name", "liliang");
redis.pexpireAt("name",1457020000);
System.out.println(" "+redis.get("name"));
Thread.sleep(2000);
System.out.println("休眠两秒后:"+redis.get("name"));
} /**
* MIGRATE host port key destination-db timeout [COPY] [REPLACE]
* 将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。
* 这个命令是一个原子操作
* @param host 传输目标主机
* @param port 传输目标主机端口
* @param key 传输的key
* @param destinationDb 目标数据库 redis 默认有 16个库(0-15)
* @param timeout 毫秒为格式,指定当前实例和目标实例进行沟通的最大间隔时间
* */
public static void migrate(){
redis.flushDB();//清除数据
redis.migrate("127.0.0.1", 6040, "name", 0, 1000);
} public static void keys(){
redis.flushDB();//清除数据
//初始化值
redis.mset("one","1","two","2","three","3","four","4","five","5"); //匹配含有o的 key
Set<String> set=redis.keys("*o*");
for(String s:set){
System.out.println("s:"+s);
} //匹配t开头后面是接两个长度的;注意t?? 查找到的事two 如是 t?则没有匹配的值
System.out.println("=======================");
Set<String> set1=redis.keys("t??");
for(String s:set1){
System.out.println("s:"+s);
} //查询全部
System.out.println("=======================");
Set<String> set2=redis.keys("*");
for(String s:set2){
System.out.println("s:"+s);
} } /**
* MOVE key db
* 将当前数据库的 key 移动到给定的数据库 db(数据库索引) 当中。
* 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,
* 或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。
* */
public static void move(){
redis.flushDB();//清除数据
redis.select(0);//显示指定当前的数据库
redis.set("name", "liliang");
System.out.println("未移动之前:"+redis.get("name"));
redis.move("name", 1);
System.out.println("移动到1库之后:"+redis.get("name")); System.out.println("===============");
redis.select(1);
System.out.println("设置当前数据库为1库之后在查找:"+redis.get("name")); } public static void object(){
//redis.ob
redis.set("age", "12");
String str=redis.objectEncoding("age");
System.out.println("str:"+str); System.out.println("===============");
redis.set("age", "12555555555555");//因整形长度过长 自动转为字符串
String str1=redis.objectEncoding("age");
System.out.println("str:"+str1); } /**
* 从当前数据库中随机返回(不删除)一个 key 。
* */
public static void RANDOMKEY(){
redis.flushDB();//清除数据
redis.set("age1", "1");
redis.set("age2", "2");
redis.set("age3", "3");
String key=redis.randomKey();
System.out.println("random key:"+key);
} /**
* RENAME oldkey newkey
* 1.当olekey 不存在报错
* 2.当newkey 存在那么newkey上的值被oldkey 覆盖
* @param olekey 要更名的key
* @param newkey 更名后的key
* */
public static void rename(){
redis.flushDB();//清除数据
redis.set("name", "liliang");
redis.set("username", "123456");
redis.rename("name", "username"); System.out.println("=====更名之后=======");
System.out.println("name:"+redis.get("name"));
System.out.println("username:"+redis.get("username"));
} /**
* RENAMENX key newkey
* 当且仅当 newkey 不存在时,将 key 改名为 newkey ;如果存在不做任何操作。
* 当 key 不存在时,返回一个错误。
* */
public static void renamenx(){
redis.flushDB();//清除数据
redis.set("name", "liliang");
//redis.set("username", "123456");
redis.renamenx("name", "username"); System.out.println("=====更名之后=======");
System.out.println("name:"+redis.get("name"));
System.out.println("username:"+redis.get("username"));
} public static void sort(){
redis.flushDB();//清除数据
redis.lpush("age", "1","15","13","5","16","2","3");
System.out.println("==========排序前集合==========");
List<String> list=redis.lrange("age", 0, -1);
for(String s:list){
System.out.println("s:"+s);
} //默认正序排序
List<String> list1=redis.sort("age");
System.out.println("==========从小到大排序后集合==========");
for(String s:list1){
System.out.println("s:"+s);
} //倒序的方式只能用以下方式
SortingParams sortingParams=new SortingParams();
sortingParams.desc();
sortingParams.limit(0,7);
List<String> list2=redis.sort("age",sortingParams);
System.out.println("==========从大到小排序后集合==========");
for(String s:list2){
System.out.println("s:"+s);
}
} /**
* 返回 key 所储存的值的类型。
* */
public static void type(){ redis.flushDB();//清除数据
redis.set("name", "liliang");
redis.set("age", "18"); redis.lpush("list", "a","b","c");
redis.hset("hset1", "username","zhangsan");
redis.hset("hset1", "pwd", "123"); redis.sadd("set1", "1","5","7");
System.out.println("=====取值所存储的类型=======");
System.out.println(redis.type("name"));//string
System.out.println(redis.type("age"));//string
System.out.println(redis.type("list"));//list
System.out.println(redis.type("hset1"));//hash
System.out.println(redis.type("set1"));//set
} public static void main(String[] args) throws InterruptedException, ParseException {
type();
} }

  

Redis学习笔记(1)-Key的更多相关文章

  1. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  2. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  3. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  4. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  5. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  6. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  7. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  8. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  9. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

随机推荐

  1. Bean的前身今世&处理器&Aware

    出生: <bean>......</bean> 幼年:BeanDefinition  bean的接口定义 小学:GenericBeanDefinition  基础的bean映射 ...

  2. wait、notify、notifyAll和Condition

    wait().notify()和notifyAll()是基于synchronized Condition是基于Lock的. Condition是在java 1.5中才出现的,它用来替代传统的Objec ...

  3. java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [xxxAction]。

    java.lang.RuntimeException: Invalid action class configuration that references an unknown class name ...

  4. BZOJ3570 : DZY Loves Physics I

    考虑两个质量均为m,速度分别v1.v2的小球发生完全弹性碰撞的影响: 由动能守恒得: $\frac{1}{2}mv_1^2+\frac{1}{2}mv_2^2=\frac{1}{2}mv_1'^2+\ ...

  5. BZOJ3789 : 扫雪车

    有上下界的网络流 T向S连容量为正无穷的边,将有源汇转化为无源汇 每条边容量减去下界,设in[i]表示流入i的下界之和减去流出i的下界之和 新建超级源汇SS,TT 对于in[i]>0的点,SS向 ...

  6. linux下安装7z命令及7z命令的使用

    本文主要介绍了在linux下安装7z命令的方法,同时介绍了7z命令的使用.7z压缩格式拥有众多优点,具有极高的压缩比率,如果你还不了解,请看文章:7z格式.LZMA压缩算法和7-Zip详细介绍. re ...

  7. SSH框架优缺点

    SSH框架优缺点 开源是3个框架共有的优点 Struts2框架(MVC框架)的优点如下: 1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现: 2)  丰富的标签库,大大提高了开发 ...

  8. workerman使用编译安装workerman的php环境

    提示 workerman只是一个代码包,如果php环境满足要求,下载后即可使用,实际上没有安装过程. workerman对php环境的要求是: 1.php>=5.3.3,可以运行命令php-v查 ...

  9. JQuery的定义

    JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera ...

  10. 【ArcGis for javascript从零开始】之一 ArcGis加载天地图

    最近做项目需要用到ArcGis来进行数据展示和数据分析.以前从来没有接触过与Gis有关的东西,一切需要从头开始学.没有时间从头系统地学习了,只能用到哪个学习哪里了,本系列只是对学习的路径进行记录.Ar ...