Redis学习笔记之Jedis
Jedis语法总结
Jedis是Java代码操作Redis的工具包,里面封装了操作Redis的方法
Jedis jedis = new Jedis(String ip , String port)
1. Jedis中对键通用的操作
| 方法 | 描述 | 返回值 /补充说明 |
|---|---|---|
| jedis.flush | ||
| jedis.flushDB | 清空数据 | |
| boolean jedis.exists(String key) | 判断某个键是否存在 | true = 存在,false= 不存在 |
| jedis.set(String key,String value) | 新增键值对(key,value) | 返回String类型的OK代表成功 |
| Set jedis.keys(*) | 获取所有key | 返回set 无序集合 |
| jedis.del(String key) | 删除键为key的数据项 | |
| jedis.expire(String key,int i) | 设置键为key的过期时间为i秒 | |
| int jedis.ttl(String key) | 获取建委key数据项的剩余时间(秒) | |
| jedis.persist(String key) | 移除键为key属性项的生存时间限制 | |
| jedis.type(String key) | 查看键为key所对应value的数据类型 |
2. Jedis中字符串的操作
字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这 便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。 在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
| 语法 | 描述 |
|---|---|
| jedis.set(String key,String value) | 增加(或覆盖)数据项 |
| jedis.setnx(String key,String value) | 不覆盖增加数据项(重复的不插入) |
| jedis.setex(String ,int t,String value) | 增加数据项并设置有效时间 |
| jedis.del(String key) | 删除键为key的数据项 |
| jedis.get(String key) | 获取键为key对应的value |
| jedis.append(String key, String s) | 在key对应value 后边扩展字符串 s |
| jedis.mset(String k1,String V1,String K2,String V2,…) | 增加多个键值对 |
| String[] jedis.mget(String K1,String K2,…) | 获取多个key对应的value |
| jedis.del(new String[](String K1,String K2,.... )) | 删除多个key对应的数据项 |
| String jedis.getSet(String key,String value) | 获取key对应value并更新value |
| String jedis.getrang(String key , int i, int j) | 获取key对应value第i到j字符 ,从0开始,包头包尾 |
3. Jedis中对整数和浮点数操作
| 语法 | 描述 |
|---|---|
| jedis.incr(String key) | 将key对应的value 加1 |
| jedis.incrBy(String key,int n) | 将key对应的value 加 n |
| jedis.decr(String key) | 将key对应的value 减1 |
| jedis.decrBy(String key , int n) | 将key对应的value 减 n |
4. Jedis中对列表 [list] 操作
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表 一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是 4294967295。
从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将 会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。

| 语法 | 描述 |
|---|---|
| jedis.lpush(String key, String v1, String v2,....) | 添加一个List , 注意:如果已经有该List对应的key, 则按顺序在左边追加 一个或多个 |
| jedis.rpush(String key , String vn) | key对应list右边插入元素 |
| jedis.lrange(String key,int i,int j) | 获取key对应list区间[i,j]的元素,注:从左边0开始,包头包尾 |
| jedis.lrem(String key,int n , String val) | 删除list中 n个元素val |
| jedis.ltrim(String key,int i,int j) | 删除list区间[i,j] 之外的元素 |
| jedis.lpop(String key) | key对应list ,左弹出栈一个元素 |
| jedis.rpop(String key) | key对应list ,右弹出栈一个元素 |
| jedis.lset(String key,int index,String val) | 修改key对应的list指定下标index的元素 |
| jedis.llen(String key) | 获取key对应list的长度 |
| jedis.lindex(String key,int index) | 获取key对应list下标为index的元素 |
| jedis.sort(String key) | 把key对应list里边的元素从小到大排序 (后边详细介绍) |
5. jedis 集合 [set] 操作
在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要 说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。
和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计 算操作,如unions、intersections和differences(就是交集并集那些了)。由于这些操作均在服务端完成, 因此效率极高,而且也节省了大量的网络IO开销
| 语法 | 操作 |
|---|---|
| jedis.sadd(String key,String v1,String v2,…) | 添加一个set |
| jedis.smenbers(String key) | 获取key对应set的所有元素 |
| jedis.srem(String key,String val) | 删除集合key中值为val的元素 |
| jedis.srem(String key, Sting v1, String v2,…) | 删除值为v1, v2 , …的元素 |
| jedis.spop(String key) | 随机弹出栈set里的一个元素 |
| jedis.scared(String key) | 获取set元素个数 |
| jedis.smove(String key1, String key2, String val) | 将元素val从集合key1中移到key2中 |
| jedis.sinter(String key1, String key2) | 获取集合key1和集合key2的交集 |
| jedis.sunion(String key1, String key2) | 获取集合key1和集合key2的并集 |
| jedis.sdiff(String key1, String key2) | 获取集合key1和集合key2的差集 |
6. jedis中有序集合 [Zsort]
Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然 而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score) 却是可以重复的。
在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。
例如:游戏排名、微博热点话题等使用场景。
| 语法 | 描述 |
|---|---|
| jedis.zadd(String key,Map map) | 添加一个ZSet |
| jedis.hset(String key,int score , int val) | 往 ZSet插入一个元素(Score-Val) |
| jedis.zrange(String key, int i , int j) | 获取ZSet 里下表[i,j] 区间元素Val |
| jedis. zrangeWithScore(String key,int i , int j) | 获取ZSet 里下表[i,j] 区间元素Score - Val |
| jedis.zrangeByScore(String , int i , int j) | 获取ZSet里score[i,j]分数区间的元素(Score-Val) |
| jeids.zscore(String key,String value) | 获取ZSet里value元素的Score |
| jedis.zrank(String key,String value) | 获取ZSet里value元素的score的排名 |
| jedis.zrem(String key,String value) | 删除ZSet里的value元素 |
| jedis.zcard(String key) | 获取ZSet的元素个数 |
| jedis.zcount(String key , int i ,int j) | 获取ZSet总score在[i,j]区间的元素个数 |
| jedis.zincrby(String key,int n , String value) | 把ZSet中value元素的score+=n |
7. jedis中 哈希[Hash]操作
Redis中的Hashes类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

规律: 哈希的 方法 都以 h 开头,含有m字符的一般是多个的, (multiple: 多个的)
| 语法 | 描述 |
|---|---|
| jedis.hmset(String key,Map map) | 添加一个Hash |
| jedis.hset(String key , String key, String value) | 向Hash中插入一个元素(K-V) |
| jedis.hgetAll(String key) | 获取Hash的所有(K-V) 元素 |
| jedis.hkeys(String key) | 获取Hash所有元素的key |
| jedis.hvals(String key) | 获取Hash所有元素 的value |
| jedis.hincrBy(String key , String k, int i) | 把Hash中对应的k元素的值 val+=i |
| jedis.hdecrBy(String key,String k, int i) | 把Hash中对应的k元素的值 val-=i |
| jedis.hdel(String key , String k1, String k2,…) | 从Hash中删除一个或多个元素 |
| jedis.hlen(String key) | 获取Hash中元素的个数 |
| jedis.hexists(String key,String K1) | 判断Hash中是否存在K1对应的元素 |
| jedis.hmget(String key,String K1,String K2) | 获取Hash中一个或多个元素value |
8. 排序操作
使用排序, 首先需要生成一个排序对象
SortingParams sortingParams = new SortingParams();
| 语法 | 描述 |
|---|---|
| jedis.sort(String key,sortingParams.alpha()) | 队列按首字母a-z 排序 |
| jedis.sort(String key, sortingParams.asc() ) | 队列按数字升序排列 |
| jedis.sort(String key , sortingParams.desc()) | 队列按数字降序排列 |
使用示例:
Jedis jedis = JedisPoolUtils.getJedis();
SortingParams sortingParams = new SortingParams();
List<String> sort = jedis.sort("list02", sortingParams.desc());
Redis学习笔记之Jedis的更多相关文章
- Redis学习笔记7--Redis管道(pipeline)
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- (转)redis 学习笔记(1)-编译、启动、停止
redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
随机推荐
- mysql 备份还原命令备忘
1.备份 mysqldump -u username -p databasename tableName > backupfile.sql 2.还原 mysql -u username -p p ...
- github加速 DevSidecar 1.8.8
DevSidecar 1.8.8 更多配置请参考:github开源
- github/gitee个人博客到底是什么一个运行原理?
本文主要讲的是GitHub.Gitee这样的代码存储网站上提供的个人博客建站的原理分析,需要注意的是,本文并不介绍GitHub.Gitee上建立个人blog的操作步骤,本文只介绍原理,不介绍实操步骤. ...
- Jmeter并发线程场景下共享变量错乱问题解决
问题复现 问题描述 使用IF控制器获取前一个请求的后置脚本中设置的全局变量->并发线程下通过vars.get获取变量时,第一个线程和第二个线程获取的变量值一样->导致不同基础数据的请求入参 ...
- Java8之新特性
简单例子 实例: 处理集合时,通常会迭代遍历它的元素,并在每个元素上执行某项操作,例如假设我们想要对某本的所有长单词进行计数,首先需要将所有单词放到一个列表中 var contents = new ...
- 深度解析:Air780E模组之SIM卡接口电路的设计原理
SIM卡接口用于连接SIM卡并读取SIM卡信息,以便在注册4G网络时进行鉴权身份验证,是4G通信系统的必要功能. 合宙低功耗4G模组经典型号Air780E支持两路SIM卡,支持双卡切换,便于设备灵 ...
- 学英语工具集KindleVocab和WordSaver
学英语坚持不下去是因为没选好工具. 我现在用的工具是Kindle+网页读新闻 生词点按之后导出到Anki背诵 借助工具,整个过程几乎无痛 1.Kindle生词及所在句子导出软件 KindleVocab ...
- 『玩转Streamlit』--布局与容器组件
在Streamlit中,布局类组件扮演着至关重要的角色. 它们不仅决定了应用程序的视觉呈现和用户体验,也极大地增强了页面内容的组织性和可读性. 通过这些组件,开发者可以灵活地划分页面空间,创建出清晰. ...
- 2025年前端面试准备html篇
时光飞逝,一晃已经工作了10年了,2014年一个人背着书包拉着箱子,下火车去做637路公交车的场景历历在目,637路公交车从起点坐到终点,开启了工作的第一站,这趟已经在路上行驶了10年的列车,经历多了 ...
- Cmocka 单元测试配置与使用
0. 前言 在 Windows 环境下配置 Cmocka 单元测试,并使用该框架进行单元测试. 1. Cmocka介绍 Cmocka 是一个 C 单元测试框架,支持 mock objects(打桩). ...