在redis入门及在商城案例中的使用中简单介绍了下使用jedis如何操作redis,但是其实方法是跟redis的操作大部分是相对应的。我这里做下记录

1、String类型操作
public class StringTest { Jedis jedis;
@Before//该注解下的方法在@Test执行之前执行
public void before(){
//创建连接
jedis = new Jedis("192.168.25.128",6379);
}
@After//该注解下的方法在@Test执行之后执行
public void after(){
//关闭连接
jedis.close();
}
/*
* 存储,获取,设置过期时间,key命令
*/
@Test
public void test() throws InterruptedException{
//1.存储值
jedis.set("name", "张三");
//2.取值
String name = jedis.get("name");
System.out.println(name);
//3.key命令:查看有效期,-1表示持久化
Long t = jedis.ttl("name");
System.out.println(t);
//4.key命令,对已经存在的key设置过期时间
jedis.expire("name", 5);
while(true){
String name2 = jedis.get("name");
System.out.println(name2);
System.out.println("有效期为:"+jedis.ttl("name")+"秒");
Thread.sleep(2000);
} }
输出结果:
张三
-1
-------------------
张三
有效期为:5秒
张三
有效期为:3秒
张三
有效期为:1秒
null
有效期为:-2秒
/*
* 测试自增自减:前提,value值能解析为数字类型
* 删除
*/
@Test
public void test2(){
jedis.set("age", "18");
String age1 = jedis.get("age");
System.out.println("当前年龄:"+age1); Long age2 = jedis.decr("age");
System.out.println("一年前年龄为:"+age2); Long age3 = jedis.incr("age");
System.out.println("现在年龄又变回为:"+age3); //如果key不存在则忽略此操作
Long del = jedis.del("age1");
}
输出结果:
当前年龄:18
一年前年龄为:17
现在年龄又变回为:18
/*
* 批量存储和获取
*/
@Test
public void test3(){
jedis.mset("a1","mysql","a2","oracle","a3","sqlServer","a4",
"redis","a5","mongodb","a6","hbase");
List list = jedis.mget("a1","a2","a3","a4","a5","a6");
for (String s : list) {
System.out.println(s);
}
}
输出结果:
mysql
oracle
sqlServer
redis
mongodb
hbase
/*
* 存储值的同时设置过期时间,判断key是否存在
*/
@Test
public void test4() throws InterruptedException{
//jedis.setex(key, 过期时间, value)
jedis.setex("life", 5, "享受美好");
while(jedis.exists("life")){
System.out.println(jedis.get("life"));
Thread.sleep(2000);
}
}
输出结果:在输出三个“享受美好”之后便不再输出
享受美好
享受美好
享受美好
2、Hash类型操作
public class MapTest { Jedis jedis;
@Before
public void before(){
jedis = new Jedis("192.168.25.128",6379);
}
@After
public void after(){
jedis.close();
} @Test
public void test1(){
//1.存储值
jedis.hset("student", "name", "小李");
jedis.hset("student", "class", "小学生");
jedis.hset("student", "age", "10");
jedis.hset("student", "skill", "keng");
//2.获取指定值 获取名字
String name = jedis.hget("student", "name");
System.out.println(name);
System.out.println("----------------------");
//3.获取存储的map
Map<string, string=""> all = jedis.hgetAll("student");
Set<entry<string,string>> set = all.entrySet();
Iterator<entry<string, string="">> iterator = set.iterator();
while (iterator.hasNext()) {
Entry<string, string=""> entry = iterator.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+":"+value);
}
System.out.println("------------------------------");
//4.获取map中全部key
Set keySet = jedis.hkeys("student");
for (String key : keySet) {
System.out.println(key);
}
System.out.println("-------------------------------");
//5.获取map中全部values
List list = jedis.hvals("student");
for (String value : list) {
System.out.println(value);
}
System.out.println("------------------");
//6.删除指定的值 删除map中class,name两对键值对
Long long1 = jedis.hdel("student", "class","name");
Set set2 = jedis.hkeys("student");
for (String key : set2) {
System.out.println(key);
}
System.out.println("-------------------");
//7.判断map是否存在
Boolean e = jedis.hexists("student", "class");
System.out.println("class是否存在:"+e);
System.out.println("-----------------");
//8.自增自减,可以指定增加减少的数值
jedis.hincrBy("student", "age", 2);
System.out.println(jedis.hget("student", "age"));
}
}
输出结果:
小李
----------------------
skill:keng
name:小李
class:小学生
age:10
------------------------------
name
class
age
skill
-------------------------------
10
keng
小李
小学生
------------------
age
skill
-------------------
class是否存在:false
-----------------
2年后年龄为:12
String跟Hash是最常见的类型,在实习这段时间也都只用到这两种,所以我觉得不管怎样这两种至少应该掌握。 3、List类型操作
public class ListTest {
Jedis jedis;
@Before
public void before(){
jedis = new Jedis("192.168.25.128",6379);
}
@After
public void after(){
jedis.close();
} @Test
public void test(){
//1.存储值(左边开始)。当成栈(子弹匣),先进先出,入栈
jedis.lpush("scores", "100","90","80","70","60");
//右边开始存
jedis.rpush("scores", "50","40","30","20","10");
//2.取值(左边开始),可以说是同时移除了该值,出栈
String lv = jedis.lpop("scores");
//右边开始取
String rv= jedis.rpop("scores");
System.out.println("左边取为:"+lv);
System.out.println("右边取为:"+rv);
System.out.println("--------------------");
//3.取所有值(只有左边开始取)0 -1表示取所有位置,位置是[start,end]
//redis命令行操作的时候已经演示过
List list = jedis.lrange("scores", 0, -1);
for (String value : list) {
System.out.println(value);
}
System.out.println("-----------");
//4.插队,44插入到100后面,注:没有什么rinsert()方法
jedis.linsert("scores",BinaryClient.LIST_POSITION .AFTER, "100", "44");
List list2 = jedis.lrange("scores", 0, -1);
for (String value : list2) {
System.out.println(value);
}
List list3 = jedis.lrange("scores", 0, 3);
for (String value : list3) {
System.out.println(value);
} }
}
输出结果:
左边取为:60
右边取为:10
--------------------
70
80
90
100
50
40
30
20
-----------
70
80
90
100
44
50
40
30
20
---------------
70
80
90
100
4、Set类型操作
public class JedisTest {
Jedis jedis;
@Before
public void before(){
jedis = new Jedis("192.168.25.128",6379);
}
@After
public void after(){
jedis.close();
}
/*
* 测试添加,取值,移除,判断
*/
@Test
public void test1(){
//1.存储
jedis.sadd("names", "Tom","Jack","Harry","Lucy","laowang");
//2.获取set中全部记录,取出来的跟存储的顺序不一样
Set members = jedis.smembers("names");
for (String member : members) {
System.out.println(member);
}
//3.移除指定数据
jedis.srem("names","Tome","Jack");
//4.判断某值是否为set中成员
Boolean tom = jedis.sismember("names", "Tome");
System.out.println("Tom在名单里吗:"+tom);
}
输出结果:
Jack
Harry
Lucy
Tom
laowang
Tom在名单里吗:false
/*
* 差集,交集,并集
*/
@Test
public void test2(){
jedis.sadd("set1", "a","b","c","d");
jedis.sadd("set2", "b","c","d","e");
//1.差集 set1中有set2中没有的
Set sdiff = jedis.sdiff("set1","set2");
for (String d : sdiff) {
System.out.println(d);
}
System.out.println("----------------");
//2.交集
Set sinter = jedis.sinter("set1","set2");
for (String in : sinter) {
System.out.println(in);
}
System.out.println("----------------");
//3.并集
Set sunion = jedis.sunion("set1","set2");
for (String un : sunion) {
System.out.println(un);
}
}
输出结果:
a
----------------
d
c
b
----------------
d
e
a
c
b
5、Zset(有序Set)类型操作
public class SortedSetTest {
Jedis jedis;
@Before
public void before(){
jedis = new Jedis("192.168.25.128",6379);
}
@After
public void after(){
jedis.close();
}
@Test
public void test1(){
//1.添加
jedis.zadd("table", 1, "a");
jedis.zadd("table", 3, "b");
jedis.zadd("table", 2, "c");
jedis.zadd("table", 5, "d");
jedis.zadd("table", 4, "e");
//2.取值 0 -1表示取所有,可以自己指定开始结束位置,跟list一样
//默认根据分数由低到高排
Set table = jedis.zrange("table", 0, -1);
for (String t : table) {
System.out.println(t);
}
System.out.println("-----------------");
//3.排序,由高到低排
Set table2 = jedis.zrevrange("table", 0, -1);
for (String t : table2) {
System.out.println(t);
}
System.out.println("-----------------");
//4.修改某个值的分数
jedis.zincrby("table", 7, "a");
Set table3 = jedis.zrevrange("table", 0, -1);
for (String t : table3) {
System.out.println(t);
}
}
}
输出结果:
a
c
b
e
d
-----------------
d
e
b
c
a
-----------------
a
d
e
b
c

  

使用jedis操作redis常用方法的更多相关文章

  1. 30个php操作redis常用方法代码例子

    From: http://www.jb51.net/article/51884.htm 这篇文章主要介绍了30个php操作redis常用方法代码例子,本文其实不止30个方法,可以操作string类型. ...

  2. Jedis操作Redis数据库

    添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...

  3. 30 个 php 操作 redis 常用方法代码例子

    这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型. list 类型和 set 类型的数据 , 需要的朋友可以参 ...

  4. Jedis操作Redis

    Jedis操作Redis的常用封装方法 @Resource(name="jedispool") private JedisPool pool=null; /** * 设置缓存对象过 ...

  5. 四、Jedis操作Redis

    前言:  原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...

  6. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  7. jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...

  8. 爱漂泊人生 30个php操作redis常用方法代码例子

    http://www.justwinit.cn/post/8789/ 背景:redis这个新产品在sns时很火,而memcache早就存在, 但redis提供出来的功能,好多网站均把它当memcach ...

  9. Jedis操作Redis技巧详解

    对于Redis的部署模式有两种,单机模式 和 集群模式.因此,本文的介绍也从这两个方面进行介绍.众所周知,Jedis是最著名的Redis java客户端操作类库,几乎支持所有的Redis操作.本文就是 ...

随机推荐

  1. c++和c动态申请二维数组

    这是我面试中遇到的一道题,用c和c++分别申请一个二维数组,int **res,要求申请后的可以使用res[3][4]这一类防存方式. 这个是没有错误检查的版本. 答案: c++语言的版本 int * ...

  2. [网络] 在浏览器输入URL回车之后发生了什么

    目录 一  前言 二  URL解析 三  DNS域名解析 1  IP 地址 2  什么是域名解析 3  浏览器如何通过域名去查询 URL 对应的 IP 呢 4  小结 四  建立连接 1  TCP三次 ...

  3. 唐敬博-201871010118 《面向对象程序设计(java)》第七周学习总结

    在博客园撰写博客(随笔),总结7周实验内容,作业格式要求如下: 博文名称:学号-姓名<面向对象程序设计(java)>第七周学习总结(1分) 博文正文开头格式:(2分) 项目 内容 这个作业 ...

  4. 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  5. 面向对象程序设计(Java) 第4周学习指导及要求

    2019面向对象程序设计(Java)第4周学习指导及要求(2019.9.17-2019.9. 23)  学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类 ...

  6. Rational Rose 画九种常用架构图

    UML建模详解(3)—使用Rational Rose 画九种常用架构图   UML是一种建模语言,是系统建模的标准.我们之所以建模是因为大规模的系统设计时相当复杂的,当系统比较复杂时就会涉及到以下这几 ...

  7. 【Kafka】Windows环境配置测试

    一.配置 1.Java配置:JAVA_HOME路径不要有空格 2.下载/kafka_2.11-1.1.0,地址是https://www.apache.org/dyn/closer.cgi?path=/ ...

  8. YAML文件格式简介

    一.yaml简介   yaml是一种用来写配置文件的序列化语言,跟json有些像,yaml又称作json的超集,yaml的设计则是为了友好可读性,主要用于配置信息的书写,而json设计的目的则是为了简 ...

  9. Git的一些概念(二)

    一.Git的结构 二.Git和代码托管中心 代码托管中心的任务:维护远程库 1. 局域网内 GitLab 服务器 -- 可以自己搭建 2. 外部环境 GitHub 码云 三.本地库和远程库 1. 团队 ...

  10. (day45)JavaScript

    目录 一.什么是JavaScript 二.注释 三.引入方式 (1)script标签内联 (2)script标签外联 四.变量 (一)变量声明 (二)命名规范 五.数据类型 (一)数值类型Number ...