声明:本篇文章参考于该作者的# Redis从入门到精通:中级篇,大家有兴趣,去关注一下。

1、字符串(String)

String(字符串)是Redis中最简单的一种数据结构,和MemCache数据结构是一样的,即Key-Value型的数据,根据Redis官方文档,Value最大值为512M。

1.1 存储结构:

1.2 基本操作:

1.2.1 保存数据

  • 当value为数值String类型的时候
> set k1 hello
OK
> get k1
hello
  • 当value为数值int类型的时候
> set k2 5
OK
> get k2
5
#自增1操作
> incr k2
6
#减4操作
> decrby k2 4
2
> get k2
2
  • 当value为数值float类型的时候
> set k3 10.2
OK
> get k3
10.2
> incr k3
ERR value is not an integer or out of range
> decrby k3 2
ERR value is not an integer or out of range

当value的类型为float类型的时候,incr和decrby是不行的。

1.2.2 获取数据

> get k1
hello

1.2.3 删除数据

> del k1
1
> get k1
null

说明:

  • 1)如果设置的key不存在,则创建新的键值对,如果已经存在,则更新值。
  • 2)如果字符串字符之间有空格,需要引号括起来。如set mykey "hello world"

2、列表(List)

2.1 存储结构:

2.2 基本操作:

2.2.1 保存数据

> lpush l1 12
1
> lpush l1 13
2
> lpush l1 14
3
> lpush l1 15
4
> lpush l2 12 13 14 15
4

2.2.2 移除数据

#移除列表的第一个元素,最后插入的元素
> lpop l1
15
#移除列表的最后一个元素,第一个插入的元素
> rpop l1
12

再取数据的时候,我们就会发现,我们插入数据的时候,顺序是:12、13、14、15,取出数据的时候,就变成了15、14、13、12 ,说明List是按照先进后出的原则。(类似于队列)

2.2.3 查看List的长度

> lpush l2 12
1
> lpush l2 13
2
> lpush l2 14
3
> llen l2
3
> lindex l2 0
14
> lrange l2 0 3
14
13
12

2.2.4 测试一下是否可以存储相同的值

> lpush l3 12
1
> lpush l3 13
2
> lpush l3 13
3
> llen l3
3

我们通过查看List的长度可以知道,是可以存储相同的值的

3、集合(Set)

redis支持value值为集合(SET),Redis 中的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

3.1 存储结构:

3.2 基本操作:

3.2.1 保存数据

> sadd set1 12
1
> sadd set1 13
1
> sadd set1 14
1
> sadd set2 13 14 15
3

3.2.2 查看集合的长度

> sadd set1 12
1
> sadd set1 13
1
> sadd set1 14
1
> scard set1
3

3.2.3 获取数据

> smembers set2
13
14
15

3.2.4 查看某值是否存在在集合中

存在的时候,返回1,不存在的时候就为0

> sismember set1 13
1
> sismember set1 10
0

3.2.5 删除集合中的元素

> srem set1 13
1
> sismember set1 13
0

3.2.6 测试集合存储值是否唯一

> sadd set1 12
1
> sadd set1 13
1
> sadd set1 14
1
> sadd set1 13
0
> scard set1
3

我们一共存了四个数进去,然后在查询长度的时候,发现长度=3,所以,集合中是不允许出现重复元素

4、哈希(Hash)

redis支持存储hash数据,也就是value是一个map,hash特别适合用于存储对象。

4.1 存储结构:

4.2 基础操作:

4.2.1 保存数据

> hset hash1 key1 12
1
> hset hash1 key2 13
1
> hset hash1 key3 14
1

或者

> hset student name wang age 10 school ustc
3

key : student

value : name wang age 10 school ustc

value是map结构。

说明:

  • 1)如果对应的key不存在,则创建一个新的键值对,这个值就是一个hash,该hash的内容就是命令中的一对或多对filed/value。
  • 2)如果对应的key已经存在,但key对应的value不是hash类型,则会用命令中的hash值覆盖该key的值,相当于该key的值变为一个hash类型。
  • 3)如果对应的key已经存在,且key对应的value是hash类型,则就会往该hash值添加或覆盖新的field/value值。

4.2.2 获取数据(获取的是整个hash里面的值)

> hgetall student
name
wang
age
10
school
ustc

说明:该命令会返回指定的key对应的hash值,注意如果该key对应的值类型不是hash会报错。

4.2.3 获取数据(获取hash中指定的filed的value)

> hget student name
wang
> hget student school
ustc

4.2.4 检查hash值中指定的键值对是否存在

> hexists student age
1
> hexists student phone
0

说明:如果存在,返回(integer) 1,否则返回(integer) 0

4.2.5 查询hash值中键值对的数量

> hlen student
3
> hlen user
2

4.2.6 删除数据

如果删除整个键值对,使用上面对字符串值操作中的del命令即可。

> del student
1
> hgetall student
null

如果只是删除hash值中指定的键值对,则使用如下命令。

语法格式:hdel key field

> hdel student name
1
> hgetall student
age
10
school
ustc

4.2.7 替换值

> hget hash1 key1
12
> hset hash1 key1 16
0
> hget hash1 key1
16

4.2.8 获取多个key

 hmget hash1 key1 key2 key3
16
13
14

5、有序集合(Sorted Set)

redis不但提供了无序集合(Set),还提供了有序集合(Sorted Set)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

5.1 存储结构:

5.2 基本操作:

5.2.1 保存数据

> zadd zset1 10.1 v1
1
> zadd zset1 11.1 v2
1
> zadd zset1 9.1 v3
1

5.2.2 查看个数

> zcard zset1
3

5.2.3 排序

> zrange zset1 0 2 withscores
v3
9.0999999999999996
v1
10.1
v2
11.1

5.2.4 指定查看某个value的排名

> zrank zset1 v3
0

5.2.5 ️(注意)

如果将v3改成11.1,排名会是什么结果?

> zadd zset1 1.1 v3
1
> zrange zset1 0 2 withscores
v1
10.1
v2
11.1
v3
11.1

你会发现两个都是11.1,v2在前v3在后,说明在两个相同的情况下,回去比较他们value值。

【Redis】基础命令的更多相关文章

  1. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  2. 【redis】redis基础命令学习集合

    写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ...

  3. 初识redis(redis基础命令)

    redis简介redis是一个开源(BSD许可)的使用C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,它可以用作数据库.缓存和消息中间件,并提供多种语言的API.从201 ...

  4. Redis基础命令

    redis本身不区分命令的大小写,这里一律用小写,以下是部分简单的命令. 1.连接操作命令    quit:关闭连接(connection)    auth:简单密码认证    help cmd: 查 ...

  5. Redis 基础命令

    1. 进入redis目录,启动redis cd src ./redis-server 2.  进入redis目录,启动redis客户端 cd src ./redis-cli 3. info命令 4. ...

  6. 一、Redis 基础命令---总括

    1.redis命令不区分大写和小写.可是KEY区分大写和小写. 2.redis-cli -h 127.0.0.1 -p 6379 依据IP/PORT链接服务端 3.redis-server --por ...

  7. 1.Redis基础命令

    重要概念 redis是单线程模型,所有命令都会进入一个队列,然后依次被执行. 全局命令 >>>select dbindex #切换数据库,默认有16个库,库标识符为0-15 > ...

  8. Redis学习笔记(2) Redis基础类型及命令之一

    1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...

  9. Redis基础认识及常用命令使用(一)--技术流ken

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...

  10. Redis基础认识及常用命令使用(一)--转载

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...

随机推荐

  1. NTP 4.2.6p5版本导致多个系统安全漏洞

    问题描述:通过漏洞扫描发现NTP 4.2.6p5版本导致多个系统漏洞,需要升级版本更高的ntp,一般刚开始都是yum直接装ntp包,现在需要重新卸载安装源码包 下载链接:http://distfile ...

  2. C++ 测试框架 GoogleTest 初学者入门篇 丙

    theme: channing-cyan *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRno ...

  3. AI人工智能 机器学习 深度学习 学习路径及推荐书籍

    要学习Pytorch,需要掌握以下基本知识: 编程语言:Pytorch使用Python作为主要编程语言,因此需要熟悉Python编程语言. 线性代数和微积分:Pytorch主要用于深度学习领域,深度学 ...

  4. LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 前天刚举办 2023 年力扣杯个人 SOLO 赛,昨天周赛就出了一场 Easy - Ea ...

  5. [Opencv-C++] 2. Opencv入门

    一.显示图像 从磁盘加载并在屏幕上显示一幅图像的简单Opencv程序 //Example 2-1. A simple OpenCV program that loads an image from d ...

  6. 【必知必会的MySQL知识】④DCL语言

    目录 一.概述 二 .授权 2.1 语法格式 2.2 语法说明 2.3 权限类型 2.4 权限级别 三. 回收权限 3.1 语法格式 3.2 语法说明 3.3 注意事项 四 .实践操作 一.概述 数据 ...

  7. SSH客户端常用工具SecureCRT操作

    目录 1.1 SecureCRT工具介绍 1.2 SecureCRT工具安装 1.3配置SecureCRT连接Linux主机 1.4调整SecureCRT终端显示和回滚缓冲区大小 1.5调整字体及光标 ...

  8. 扯什么kafka顺序消费,然后呢?古尔丹,代价是什么

    著名面试八股文之kafka为什么读写效率高,写的答案之一是partition顺序写,因而能保证分区内的不连续的有序性. 这里的重点是有序追加到磁盘,而不是严格意义上的完全有序性. 几年前参加了一大数据 ...

  9. 2022-10-25:在一个 2 * 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换.

    2022-10-25:在一个 2 * 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换. ...

  10. annotate()使用聚合计数、求和、平均数 raw()执行原生的SQL

    annotate()使用聚合计数.求和.平均数  raw()执行原生的SQL # 按老师分组,求课程的销量 Course.objects.values('Teacher').annotate(vol= ...