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】[48] 【最长不含重复字符的子字符串】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.假设字符串中只包含'a'~'z'的字符.例如,在字符串&q ...
- Vue中如何使用less
最近发现好多小伙伴在面试的过程中会问到vue如何使用less和scss,所以我绝对更新.复习一下less:废话不多说直接进主题: 依赖下载 1.首先使用npm下载依赖: npm install --s ...
- FreeSql (八)插入数据时指定列
插入数据时指定列,和忽略列对应,未被指定的列将被忽略. var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Passwor ...
- 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解
转自: http://blog.csdn.net/lovexieyuan520/article/details/9974929 http://blog.csdn.net/cyp331203/artic ...
- Redis相关安装TCL
安装相关命令 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gzsudo tar -xzvf tcl8.6.1-src.tar. ...
- laravel中利用循环实现隔行换色
1.首先在你的路由文件定义好访问的路径 2. <!doctype html><html lang="en"><head> <meta ch ...
- 【学习笔记】第七章 python3核心技术与实践--输入与输出
[第六章]思考题答案,仅供参考: # coding:utf-8import time#方法一start_time = time.perf_counter()s = ''for n in range(0 ...
- Escape (BFS + 模拟)
Problem Description The students of the HEU are maneuvering for their military training. The red arm ...
- Java 教程(开发环境配置+基础语法)
Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.ora ...
- 第一次接触WebSocket遇到的坑以及感受
要求用.net写一个服务,然后通过webscoket实现客户端与服务端之间的通信. 第一次知道.net还可以用来写服务,然后问题来了,服务是什么- -..下面图里的就是服务,可以停止暂停和启动. 我要 ...