Redis之数据类型及命令
Redis(REmote DIctionary Server) 是一个遵守BSD协议、支持网络、可基于内存亦可持久化的日志型key-value存储系统。
KEY
常用指令:
指令
|
注释
|
备注
|
exits key
|
检测指定 key 是否存在
|
1 : 存在,0 : 不存在
|
del key1 key2......keyN
|
删除给定 key
|
返回删除 key 的数目,0 表示给定 key 都不存在
|
type key
|
返回给定 key 值的类型
|
none : key 不在 string : 字符类型
list : 链表类型 set : 无序集合类型
|
keys pattern
|
返回匹配指定模式的所有 key
|
|
randomkey
|
随机返回一个 key
|
如果当前数据库是空的,返回空串
|
rename oldkey newkey
|
重命名一个 key
|
如果 newkey 已存在,将会被覆盖newkey的值.
|
expire key seconds
|
设置key 的过期时间,单位是秒。
|
返回 1 : 成功,0 :key 不存在
|
ttl key
|
返回key的剩余过期秒数
|
-1 : key未设置过期时间, -2:key不存在
|
persist key
|
清除key的过期时间
|
1 : 成功 0:key不存在或者没有设置过期时间
|
VALUE
Redis 提供五种数据类型:String,Hash,List,Set 及 ZSet。
- String
String 是最基本的类型,而且 String 类型是二进制安全的,意思是 Redis 的 String 可以 包含任何数据。
常用指令:
指令
|
注释
|
例子
|
set key value
|
存数据
|
set username 'winn'
|
get key
|
取数据
|
get username
|
mset key1 value1... keyn valuen
|
一次存多个键值对
|
mset uname 'winn' pwd '123'
|
mget key1 ... keyn
|
一次取多个值
|
mget uname pwd
|
Java使用:
@Test
public void testString() {
Jedis jedis = new Jedis("localhost");
jedis.set("name","winn");
System.out.println(jedis.get("name"));
//拼接
jedis.append("name", " is my lover");
System.out.println(jedis.get("name"));
jedis.del("name");
System.out.println(jedis.get("name"));
//设置多个键值对
jedis.mset("name","winn","age","27","qq","174754613");
//进行加1操作
jedis.incr("age");
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));//执行结果:winn-28-174754613
}
- Hash
Hash 是一个 String 类型的 field 和 value 的映射表,最大可以包含(2^32 -1)个键值对。增删操作的时间复杂度为 O(1)。
#配置字段最多 个
hash-max-zipmap-entries #配置 value 最大为 字节
hash-max-zipmap-value
常用指令:
指令
|
注释
|
例子
|
hmset key field1 value1 ... fieldn valuen
|
存数据
|
hmset user name 'winn' sex 'man'
|
hget key
|
取数据
|
hget user name
|
hgetall key
|
获取对象
|
|
HKEYS key
|
夺取对象中的所有filed
|
|
HVALS key
|
夺取对象中的所有value
|
|
@Test
public void testHash(){
Jedis jedis = new Jedis("localhost");
Map<String, String> map = new HashMap<>();
map.put("name", "xinxin");
map.put("age", "22");
map.put("qq", "123456"); jedis.hmset("user",map); List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
System.out.println(rsmap); //删除map中的某个键值
jedis.hdel("user","age");
System.out.println(jedis.hmget("user", "age")); //null //hlen 返回key中的field-value个数
System.out.println(jedis.hlen("user")); //2
//exists 判断key是否存在
System.out.println(jedis.exists("user"));//true
//hkeys 返回所有的field
System.out.println(jedis.hkeys("user"));//[name, qq]
//hvals 返回所有的value
System.out.println(jedis.hvals("user"));//[xinxin, 123456] Iterator<String> iter=jedis.hkeys("user").iterator();
while (iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+jedis.hmget("user",key));
}
}
- List(双向链表类型)
List 是一个链表结构,可以理解为一个每个子元素都是 String 类型的双向链表。主要功能是 push、pop、获取一个范围内的所有值等。
常用指令:
指令
|
注释
|
例子
|
lpush listName value
|
将value存入list的表头
|
lpush listData demo
|
rpush listName value
|
将value存入list的表尾
|
rpush listData demo
|
lrange listName startIndex endIndex
|
返回下标在[startIndex, endIndex]中的值
|
lrange listData 0 10
|
Java使用:
public void testList(){
if(jedis.keys("*") != null){
jedis.flushDB();
}
//rpush : 在表尾添加数据
jedis.rpush("db","This","is","redis");
jedis.rpush("db","demo");
//lpush : 在表头添加数据
jedis.lpush("db","Begin : ");
System.out.println(jedis.lrange("db", 0, jedis.llen("db")));
//-1表示最后一个元素
System.out.println(jedis.lrange("db", 0, -1));
//排序 : 排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
//System.out.println(jedis.sort("db"));
}
- Set
指令
|
注释
|
例子
|
sadd key member
|
将value存入set
|
sadd setData set demo
|
smembers key
|
返回key中的数据 |
sembers setData
|
sismbers key
|
判断key是否存在 | sismembers setData |
SDIFF key1 [key2]
|
返回给定所有集合的差集
|
|
SINTER key1 [key2]
|
返回给定所有集合的交集
|
|
SUNION key1 [key2]
|
返回所有给定集合的并集
|
|
Java使用:
@Test
public void testSet(){
Jedis jedis = new Jedis("localhost");
//添加
jedis.sadd("user","liuling");
jedis.sadd("user","xinxin");
jedis.sadd("user","ling");
jedis.sadd("user","zhangxinxin");
jedis.sadd("user","who");
//srem : 移除value
jedis.srem("user","who");
System.out.println(jedis.smembers("user"));//获取所有加入的value
System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素
System.out.println(jedis.srandmember("user"));//随机返回一个value
System.out.println(jedis.scard("user"));//返回集合的元素个数 jedis.sadd("customer","ling");
jedis.sadd("customer","xinxin");
jedis.sadd("customer","winn");
jedis.sadd("customer","nicole");
jedis.sadd("customer","sam");
//并集
System.out.println(jedis.sunion("user","customer"));
//差集 : 返回user中customer不包含的value
System.out.println(jedis.sdiff("user","customer"));
//交集
System.out.println(jedis.sinter("user","customer"));
}
- ZSet(有序集合类型Sorted Set)
Sorted Set 是有序集合,且不允许重复的成员。它在 Set 的基础上增加了一个顺序属性(score),这一属性在添加修改元素的时候可以指定,每次指定后,会自动重新按新的值调整顺序。
常用指令:
指令
|
注释
|
例子
|
zadd key score member
|
存数据
|
zset zsetData 0 demo
|
zrange key startScore endScore [WITHSCORES]
|
取score在[startScore, endScore]之间的数据
|
zrange zsetData 0 10
|
Java使用:
@Test
public void testZSet(){
Jedis jedis = new Jedis("localhost");
jedis.zadd("user",1,"winn");
jedis.zadd("user",2,"sam");
jedis.zadd("user",5,"nicole");
jedis.zadd("user",4,"roy");
Set<String> user = jedis.zrange("user", 0, -1);
System.out.println(user);
}
补充
- 系统常用指令
指令
|
注释
|
备注
|
keys name
|
获取指定key
|
keys * 获取所有key
|
flushdb
|
清除当前数据库的所有数据
|
|
flushall
|
清除所有数据库的所有数据
|
|
besize
|
返回数据库中key的数量
|
|
config set field value | 设置系统参数 | config set maxmemory 100mb |
config get field | 查看系统参数 | config get maxmemory |
- Java使用Redis事务
/**
* 使用事务
* Redis事务可以理解为一个打包的批量执行脚本,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
*
*/
@Test
public void testTrans() {
//开启事务
Transaction tx = jedis.multi();
for (int i = 0; i < 1000; i++) {
tx.set("t" + i, "t" + i);
}
//执行事务
tx.exec();
System.out.println(jedis.get("t100"));
}
- 更多命令,请查看(全集)https://redis.io/commands
Redis之数据类型及命令的更多相关文章
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Redis常用数据类型及命令
Redis数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 注意: 命令的关键词,如set ...
- redis基本数据类型及命令
一.key相关命令 redis本质上是key-value数据库.所以key操作适用于redis的任何数据类型缓存. 1.exists key判断是否存在key,存在返回1,不存在返回0 2.del k ...
- Redis五大数据类型常用命令脑图
- redis常用数据类型与命令
注意:LPUSH 和LPOP按照栈进行操作,RPUSH和RPOP按照队列进行操作 zremrangebyscore key score开始 score结束//根据score删除 zremrangeb ...
- Redis的数据类型及其常用命令
快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...
- 【数据库】Redis(2)--Redis的常用数据类型及命令
1.Redis主要数据类型分类 Redis中存储数据常用的数据类型主要有五种:String.List.Set.Sorted Set.Hash,这五种数据结构在Redis中存储数据的命令掌握对于我们后期 ...
- 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端
1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...
- 解析Redis操作五大数据类型常用命令
摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...
随机推荐
- 【Offer】[44] 【数字序列中某一位的数字】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 数字以0123456789101112131415..的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是 ...
- JavaScript 基础入门
JavaScript 基础入门 JavaScript 的组成 JS 由三部分组成,它们分别是:ECMAScript.DOM.BOM. ECMAScript 因为网景开发了JavaScrip ...
- 【学习笔记】第八章 python3核心技术与实践--条件与循环
[第七章]思考题答案,仅供参考:
- MySQL优化之索引原理(二)
一,前言 上一篇内容说到了MySQL存储引擎的相关内容,及数据类型的选择优化.下面再来说说索引的内容,包括对B-Tree和B+Tree两者的区别. 1.1,什么是索引 索引是存储引擎用于快速找 ...
- React + TypeScript 默认 Props 的处理
React 中的默认 Props 通过组件的 defaultProps 属性可为其 Props 指定默认值. 以下示例来自 React 官方文档 - Default Prop Values: clas ...
- 《Java并发编程的艺术》读书笔记
一.并发编程的挑战 上下文切换:cpu通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务.但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的 ...
- WinServer 2012 R2 安装python3.6时出现错误:0x80240017 导致安装失败
解决方法: 依次检查并更新补丁:KB2919442,KB2919355,kb2999226 KB2919442:https://www.microsoft.com/zh-cn/download/det ...
- 第四周 Java课件内容动手动脑
1.JDK中的Math类 package ke1; public class TestMath { public static void main(String[] args) { /*------- ...
- Vue Element 导航子路由不选中问题
首先说下遇到的问题 1.进入嵌套路由,当前父导航无法高亮显示 2.页面刷新后导航重置问题 3.在嵌套路由刷新页面也会导致导航重置问题 接下来是解决方案: elementUI 里面有个属性 defaul ...
- maven手动添加jar包到pom仓库
此处以顺丰jar包为例: mvn install:install-file -Dfile=D:\TSBrowserDownloads\SF-CSIM-EXPRESS-SDK-V1.-\SF-CSIM- ...