首页 > 数据库 >Redis基础命令

Redis基础命令

时间:2022-11-30 11:15:15浏览次数:47  
标签:set 基础 age 元素 Redis 命令 user key xust

Redis基础命令

目录

Redis数据结构介绍

redis是一个key-value的数据库,key一般是String类型,但是value的类型多种多样

前五种是基本类型:

  • String:Hello World
  • Hash:{name:"Tom",age:21}
  • List:[A->B->C]
  • Set:{A,B,C}
  • SortedSet:{A:1,B:2,C:3}
  • GEO:{A:(120.3,30.5)}
  • BitMap:0100011101001010101
  • HyperLog:0100011101001010101

Redis通用命令

添加或修改键值对

set age 21

获取key对应的value

get age

查询所有key

KEYS *

删除key

DELETE key1 key2 ...

判断key是否存在

EXISTS age

给key设置有效期20秒,有效期到自动删除

EXPIRE age 20

查看一个key的剩余有效期,返回值为正数表示秒,-2表示已删除,-1表示永久有效

TTL age

String类型

批量添加

MSET k1 v1 k2 v2 k3 v3

批量获取

MGET k1 k2 k3

自增

INCR age

指定步长自增自减

INCRBY age -2

浮点型数字指定步长自增

set score 10.1
INCRBYFLOAT score 0.5

添加一个键值对,不存在才添加

set age 21
SETNX age 21

添加一个键值对,并设置有效期

SETEX name1 10 Jack

key的层级结构

redis的key允许多个单词形成层级结构,多个单词之间用':'隔开,如下是xust公司id为1和2的user,xust公司id为1和2的狗

set xust:user:1 '{"id":1,"name":"Jack","age":21}'
set xust:user:2 '{"id":2,"name":"Jhon","age":13}'
set xust:dog:1 '{"id":1,"name":"AHuang","age":2}'
set xust:dog:2 '{"id":2,"name":"ABai","age":5}'

Hash类型

String类型将对象序列化为Json字符串后存储,修改某个字段时不方便

xust:user:1				{"id":1,"name":"Jack","age":21}

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD

			field	  value
xust:user:1		name	  Jack
			age	  21

添加或修改hash类型key的field的值

HSET xust:user:3 name Lucy
HSET xust:user:3 age 12

获取一个hash类型key的field的值

HGET xust:user:3 age

批量添加多个hash类型key的field的值

HMSET xust:user:4 name Tim age 14 sex man

批量获取多个hash类型key的field的值

HMGET xust:user:4 name age sex

获取一个hash类型key中所有field和value

HGETALL xust:user:4

获取一个hash类型key中所有field

HKEYS xust:user:4

获取一个hash类型key中所有value

HVALS xust:user:4

让一个hash类型key的字段值自增并指定步长

HINCRBY xust:user:4 age 2

添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

HSETNX xust:user:4 age 21

List类型

类似Java中的LinkedList,可以看作是一个双向链表,既支持正向检索也支持反向检索

特征也与LinkedList类似:

  • 有序、
  • 元素可以重复‘
  • 插入删除块
  • 查询速度一般

常用来存储有序数据,如朋友圈点赞列表


向列表左侧插入一个或多个元素

LPUSH users 1 2 3

移除并返回列表左侧第一个元素,没有则返回nil

LPOP users 1

向列表右侧插入一个或多个元素

RPUSH users 4 5 6

移除并返回列表右侧第一个元素

RPOP users 1

返回一段角标范围内所有元素

LRANGE users 1 3

BLPOP和BRPOP与LPOP和RPOP类似,只是没有元素时等待指定时间,不是直接返回nil

等待20秒
BLPOP users 20

使用LPUSH+LPOP或RPUSH+RPOP可模拟栈

使用LPUSH+RPOP或RPUSH+LPOP可模拟队列

Set类型

类似Java中的HashSet,可看作一个value为null的HashMap

具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

向set中添加一个或多个元素

SADD s1 a b c

移除set中指定元素

SREM s1 a

返回set中元素个数

SCARD s1

判断一个元素是否存在于set中

SISMEMBER s1 b

获取set中所有元素

SMEMBERS s1

求两个集合的交集

SINTER s1 s2

求两个集合的差集

SDIFF s1 s2

求两个集合并集

SUNION s1 s2

SortedSet类型

一个可排序的set集合,类似Java中的TreeSet,但底层数据结构差别很大。SortedSet每一个元素都带有一个score属性,可基于score排序,低层实现是一个跳表(SkipList)加hash表

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

经常被用于实现排行榜


添加一个或多个元素到sorted set,若已经存在则更新score值

ZADD students 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles

删除sorted set中一个指定元素

ZREM students Tom

获取sorted set中指定元素的score值

ZSCORE students Jack

获取sorted set中指定元素的排名,从0开始

ZRANK students Rose

获取sorted set中元素个数

ZCARD students

统计score值在给定范围内的元素个数

ZCOUNT students 0 80

让sorted set中指定元素指定步长自增

ZINCRBY students 2 Jack

按照score排名后获取指定排名范围内的元素

ZRANGE students 0 2

按照score排名后获取指定score范围内的元素

ZRANGEBYSCORE students 0 80

求差集,交集,并集与之前类似

排名默认都是升序,Z后添加REV为倒序,如ZRANGE-->ZREVRANGE

标签:set,基础,age,元素,Redis,命令,user,key,xust
From: https://www.cnblogs.com/LoginX/p/Login_X59.html

相关文章

  • k8s常用命令
    1、查看pod(查看其他资源类型的信息只需要把pod换为svc、deployment、configmap=cm、pv、pvc)信息,-o其他选项,wide显示长信息,yaml显示为yaml格式1.1查看pod详细信息kubect......
  • Linux高级-基本命令(二)-笔记
    1.输出重定向命令:>Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。如:ls>test.txt(test.txt如果不存在,则创建,存在则覆盖其内容)注......
  • Solidity基础介绍
    solidty跟javascript有一定的相似认识一个最简单的存储合约让我们先看一下最基本的例子。现在就算你都不理解也不要紧,后面我们会有更深入的讲解。//SPDX-License-Identifi......
  • JavaScript基础(一)
    JavaScript基础第01天1-编程语言1.1编程编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。计算机程序:就是计算机所......
  • 练习_用户存在_命令判断
    #!/usr/bin/bashread-p"pleaseinputausername:"userid$user&>/dev/null#iduser用户是否存在if[$?-ne0];thenecho"nosuchuser:$user"......
  • 命令查询职责分离 - CQRS
    概念CQRS是一种与领域驱动设计和事件溯源相关的架构模式,它的全称是CommandQueryResponsibilitySegregation,又叫命令查询职责分离,GregYoung在2010年创造了这个术......
  • ArcGIS基础:属性连接注意事项_YuanYWRS的博客
    【1】连接条件,字段类型必须相同,出现连接找不到字段的情况,这个原因就是其中之一,不能将字符串与数字的字段进行连接的。【2】其次,要保证数值完全相同,比如1.0与1就是不同的,河......
  • 链表基础知识
    1.什么是链表   链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空......
  • Linux--常用命令精讲
    一、Linux命令基础  1.1:Shell脚本Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。所有语言的特性:源......
  • centos7安装redis
    安装依赖yuminstall-ygccyum-yinstallcentos-release-sclyum-yinstalldevtoolset-9-gccdevtoolset-9-gcc-c++devtoolset-9-binutilssclenabledevtoolse......