0

0

Redis基础知识点有哪些

王林

王林

发布时间:2023-05-30 09:38:16

|

970人浏览过

|

来源于亿速云

转载

1. 什么是redis

我们先看看Redis官网给的介绍:

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

简而言之,Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种数据类型,功能挺强。

2. Redis之父

Redis之父是Salvatore Sanfilippo,一名来自意大利西西里岛的程序员,大家更习惯称呼他Antirez。如果你对他感兴趣,你可以游览他的博客或者追踪他的GitHub。

3. Redis有什么优势

  •  速度快:Redis使用内存来存储数据集,且支持Pipelining命令,可以一次发送多条命令。

  •  持久化:可以把内存中的数据保存在磁盘中,在重启时可重新加载使用。

  •  原子性:所有操作都是原子性的,同时支持事务。

  •  数据结构丰富:支持字符串、列表、哈希、集合及有序集合,满足大多数使用需求。

  •  支持多种语言:Redis支持许多语言,如C、C++、C#、Go、Java、JavaScript、PHP等等。

  •  多种特性:Redis还支持publish/subscribe, 通知, key 过期等特性。

4. Redis能做什么

因为Redis交换数据速度快,所以常在服务器中被用于存储一些需要频繁调取的数据,相比于直接读取磁盘来获得数据,使用Redis可以节省大量时间,提升效率。举个例子:

某视频网站每天有100万人访问首页推荐视频专栏,如果都从数据库查询读取,那么每天都至少要多出100万次数据库查询请求。若使用了Redis,将常被调取的数据存到内存中,每次节约0.1秒,100万次就有10万秒,极大程度提高了速度与开销。

总之,Redis的应用场景十分广泛,且价值极高,现在就开始学学基础。

5. 安装Redis

若想做好工作,就必须先准备好工具;想要学习Redis,那么第一步当然就是安装Redis了。只展示在Windows系统下安装Redis,因为我正在使用Windows操作系统。要尝试Redis,但不想安装它时,您可以使用官方提供的在线测试网站,其中还有简单的介绍和教程。

  •  Windows下安装Redis这里我们下载Redis-x64-3.2.100.zip压缩包文件(如果有更新版本,可以下载最近更新的稳定版本)。

Redis基础知识点有哪些

download

下载好之后解压到自己的文件夹中。例如我解压到D:\redis中。

Redis基础知识点有哪些

unzip

打开一个cmd窗口,使用cd命令切换目录到解压后的文件夹路径(例如我切换目录到D:\redis),然后运行命令:

redis-server.exe redis.windows.conf。

输入之后会显示如下界面:

Redis基础知识点有哪些

redis-server

我们成功启动了 Redis 服务端,如图所示,可看到端口号为 6379 等相关信息。在使用redis服务端时,我们需要在新开一个cmd窗口,同时保持原来的窗口不关闭,否则将无法访问服务端。同样将路径切换到redis目录下,然后运行:

redis-cli.exe -h 127.0.0.1 -p 6379

存入一个键值对:

set firstkey "hello redis"

取出键值对:

get firstkey

关闭连接:

quit

Redis基础知识点有哪些

first_use

我们成功在Windows操作系统下安装了Redis,并且首次体验了Redis的键值对存储模式。

6. Redis数据结构

Redis支持五种数据结构:String(字符串)、Hash(哈希)、List(列表)、Set(集合)以及SortedSet(有序集合)。下面我们简单介绍下每一种数据结构以及他们的基本命令。

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  StringString是Redis最基本的数据结构,也是任何存储系统都必备的数据类型。String类型是二进制安全的,简单来说,基本上你什么都能用字符串存储,你可以把图片文件的内容或者序列化的对象作为字符串来存储。String类型的值最大可以存512MB,确实基本什么都够存了。 

> set mykey "hello world"  OK
> gey mykey    "hello world"
> getrange mykey 6 10      "world"      > getrange mykey 0 20      "hello world"      > getrange mykey 0 -1      "hello world"

Tips:从上面几个实例,我们不难看出字符串起始从0开始;若end大于字符串长度时返回完整字符串;而当end为-1时,end为字符串最后一个字符。 

> getset database "mysql"      (nil)      > get database      "mysql"      > getset database "redis"      "mysql"      > get database      "redis"

Tips: 当键未设置时,会返回(nil)。 

> strlen mykey     (integer) 11
> append mykey ", hello redis"    24    >get mykey    "hello world, hello redis"
> set incr_num 10     OK     >get incr_num     "10"     >incr incr_num     (integer) 11
> incrby incr_num 4  (intrger) 15
> incrbyfloat incr_num 0.5   15.5

Tips:整数值会显示为integer,当变为浮点型后并不会提示为float 

> set decr_num 10     OK     > get decr_num     "10"     > decr decr_num     (integer) 9
> decrby decr_num 4     (integer) 5

Tips:redis并没有数字值减少给定浮点值的命令,如果我们想要decr_num减少2.5,可以用incrbyfloat命令执行incrbyfloat decr_num -2.5。   

> incrbyfloat decr_num -2.5        2.5
  •   decrby key decrement:整数值减少给定整数值(decrement)

  •   decr key:整数值-1

  •   incrbyfloat key increment:数字值增加给定浮点值(increment)

  •   incrby key increment:整数值增加给定整数值(increment)

  •    ncr key:整数值+1

  •   append key value:如果可以已存在且是一个字符串,则将指定value添加到原值末尾,会返回操作后字符串长度

  •   strlen key:返回键所存储的字符串值的长度

    医院网站系统
    医院网站系统

    HTML医院网站系统基于PHP+MYSQL开发,在文章内容网站的基础上,预设了医院概况、新闻动态、环境设备、名医荟萃、专科介绍、就医指南、专家门诊值班表、网上挂号、医疗保健知识、在线咨询等医院网站常用的栏目和测试数据,采用适合医院网站的专用模版,增强了系统的针对性和易用性。系统具有文章、图文、下载、社区、表单、用户等基本系统模块和一系列网站辅助功能,用户也可根据自身特点任意创建和修改栏目,适合创建

    下载
  •   getset key value:设置指定键的新值,并返回旧值

  •   getrange key start end:返回key中字符串的子串

  •   get key:获取指定键的值

  •   set key value:设置指定键的值

  2.   HashHash存储的是field和value的映射关系,适合用户存储对象。比如要存储一个用户的姓名、年龄、地址等,就可以使用Hash。每个Hash可以存储232>-1个field-value对(4294967295,40多亿)。

> hset myhash name "test"    (integer) 1    > hget myhash name    "NPC"    > hset myhash name "NPC"    (integer) 0

Tips:使用hset命令,新建字段并设置值成功后返回1,如果修改已有字段的值则返回0。

> hmset myhash age "20" country "China"    OK
> hexists myhash name      (integer) 1      > hexists myhash phone      (integer) 0

Tips:哈希表key中含有字段field返回1,不含有或对应key不存在返回0。 

> hmget myhash name age phone     1) "NPC"     2) "20"     3) (nil)
> hgetall myhash     1) "name"     2) "NPC"     3) "age"     4) "20"     5) "country"     6) "China"
> hkeys myhash     1) "name"     2) "age"     3) "country"
> hvals myhash     1) "NPC"     2) "20"     3) "China"
> hlen myhash   3
> hdel myhash age      (integer) 1
  •   hdel key field1:删除哈希表key中一个field

  •   hlen key:获取哈希表key中字段的数量

  •   hvals key:获取哈希表key中所有value

  •   hkeys key:获取哈希表key中所有field

  •   hgetall key:获取哈希表key中所有field-value对

  •   hmget key field1 [field2]:获取哈希表key中所有给定field的value

  •   hexists key field:查看field是否存在于哈希表key中

  •   hmset key field1 value1 [field2 value2]:同时设置哈希表key中的多个field-value对。

  •   hset key field value:设置哈希表中key中field的值为value

  •   hget key field:获取哈希表key中field对应的value

  3.  ListRedis的List类型是简单的字符串列表,在底层实现上相当于一个链表,我们可以在列表的头部(左边)或尾部(右边)添加值。列表最多可以存储232>-1个元素(4294967295,40多亿)。 

> lpush mylist "a" "b"     (integer) 2     > rpush mylist "c" "d"     (integer) 4

Tips:执行lpush和rpush命令后返回列表的长度。

> llen mylist    (integer) 4
> lrange mylist 0 -1    1) "b"    2) "a"    3) "c"    4) "d"    > lrange mylist 1 -2    1) "a"    2) "c"

Tips:由上述例子我们不难看出lrange命令中的start和end参数都是索引值,其中0代表第一个元素,-1表示最后一个元素。 

> lindex mylist 0     "b"
> lpop mylist  "b"  > rpop mylist  "d"
> rpush rem "hello" "hello" "redis" "hello"     (integer) 4     > lrange rem 0 -1     1) "hello"     2) "hello"     3) "redis"     4) "hello"     > lrem rem -2 "hello"     (integer) 2     >lrange rem 0 -1     1) "hello"     2) "redis"

在列表中从左到右搜索,移除数量为count且与value相等的元素。count

  •   lrem key count value:根据count的值,移除列表中与参数value相等的元素

  •   lpop key:移除并获取列表头部的值

  •   rpop key:移除并获取列表尾部的值

  •   lindex key index:通过索引获取列表中元素

  •   lrange key start end:获取列表指定范围内的值

  •   llen key:获取列表长度

  •   lpush key value1 [value2]:将一个或多个值插入到列表头部(左边)

  •   rpush key value1 [value2]:将一个或多个值插入到列表尾部(右边)

  4.  SetSet(集合)存储string类型的值,集合不允许重复元素,但集合里面的元素没有先后顺序。集合中最大的成员数为232>-1(4294967295,40多亿)。

> sadd myset1 "hello" "redis"    (integer) 2    > sadd myset1 "hello"    (integer) 0

Tips:当向集合添加重复成员时,返回0

> scard myset1  2
> smembers myset1    1) "hello"    2) "redis"
> sadd myset2 "hello" "world"    (integer) 2    > sdiff myset1 myset2    1) "redis"    > sdiff myset2 myset1    1) "world"
> sinter myset1 myset2     1) "hello"
> sunion myset1 myset2    1) "hello"    2) "redis"    3) "world"
> sadd myset1 "NPC"     (integer) 1     >spop myset1     "redis"     >smembers myset1     1) "NPC"     2) "hello"
  •   spop key:移除并返回集合中的一个随机元素

  •   sunion key1 [key2]:返回所有给定集合的并集

  •   sinter key1 [key2]:返回所有给定集合的交集

  •   sdiff key1 [key2]:返回所有给定集合的差集

  •   smembers key:返回集合中的所有成员

  •   scard key:获取集合成员数量

  •   sadd key member1 [member2]:向集合添加一个或多个成员

  5.  SortedSet除了无序集合(Set),Redis还提供了有序集合(SortedSet),有序集合不允许重复的成员,且每个不同的成员都关联一个double类型的分数,redis通过这些分数对成员进行从小到大排序。有序集合有时也被称为ZSet,因为其命令都是以字母Z开头的。

> zadd myzset 10 "one" 20 "two" 30 "three"   (integer) 3
> zcard myzset  3
> zscore myzset "one"  10.0
> zrange myzset 0 -1     1) "one"     2) "two"     3) "three"     > zrange myzset 0 -1 withscores     1) "one"     2) 10.0     3) "two"     4) 20.0     5) "three"     6) 30.0     > zrevrange myzset 0 -1 withscores     1) "three"     2) 30.0     3) "two"     4) 20.0     5) "one"     6) 10.0
> zrank myzset "one"    0    >zrank myzset "three"    2    > zrevrank myzset "one"    2    > zrevrank myzset "three"    0
> zcount myzset 15 40    2
> zrange myzset 0 -1 withscores    1) "one"    2) 10.0    3) "two"    4) 20.0    5) "three"    6) 30.0    > zincrby myzset 40 "one"    50.0    > zrange myzset 0 -1 withscores    1) "two"    2) 20.0    3) "three"    4) 30.0    5) "one"    6) 50.0
  •   zincrby key increment member:将指定成员的分数增加increment

  •   zcount key min max:返回分数在min和max之间的成员数量

  •   zrank key member:返回指定成员的排名,从小到大排序

  •   zrevrank key member:返回指定成员的排名,从大到小排序

  •   zrange key start end [withscores]:通过索引start和end从小到大返回成员

  •   zrevrange key start end [withscores]:通过索引start和end从大到小返回成员

  •   zscore key member:返回指定成员的分数

  •   zcard key:获取有序集合的成员数量

  •   zadd key score1 member1 [score2 member2]:向有序集合中添加一个或多个成员,或者更新已有成员分数 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

401

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

619

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

354

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

259

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

603

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

530

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

645

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

603

2023.09.22

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号