Redis【超詳細】

Redis 是一個基于內存的key-value結構的數據庫

一、redis的安裝

1.1、安裝步驟

1)安裝Redis依賴

Redis是基于c語言編寫的,因此需要安裝對應的gcc環境

yum install -y gcc tcl

2)進入/usr/local/src/目錄上傳并解壓安裝包

解壓:

tar -zxvf 安裝包名

3)解壓成功后進入解壓的文件目錄

運行編譯指令:

make && make install

注意:如果沒有報錯,表示安裝成功,默認安裝路徑為/user/lcoal/bin目錄下

1.2、啟動方式

1)前臺啟動

前臺啟動,會阻塞整個窗口,窗口關閉或者停止,Redis也會停止

redis-server

2)后臺啟動

修改Redis的配置文件,配置文件就在解壓的安裝包下,名稱為redis.conf,修改配置文件,一般先進行備份

# 將守護進程修改為yes就可以在后臺運行
daemonize yes

修改成功后啟動redis時,只需要在命令后面加上配置文件名

redis-server redis.con

1.3、開機自啟

通過配置設置開機自啟,創建一個系統服務文件

1)創建系統服務文件

vi /etc/systemd/system/redis.service

2)設置文件內容為

[Unit]
Description=redis-server
After=network.target
?
[Service]
Type=forking
# 這行配置內容要根據redis的安裝目錄自定義路徑
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true
?
[Install]
WantedBy=multi-user.target

3)重載系統服務:

systemctl daemon-reload

之后就可以使用systemctl命令操作redis

1.4、Redis其他配置

# 設置訪問Redis的訪問密碼
requirepass 密碼
?
# 監聽端口
port 6379
?
# 設置允許訪問的地址,默認是127.0.0.1,會導致只能在本地訪問,設置為0.0.0.0就可以在任何IP下訪問
bind 0.0.0.0
?
# 數據庫數量,設置為1,代表只使用一個數據庫,默認有16個庫
databases 1
?
# 設置redis最大使用的內存
maxmemory 512mb
?
# 日志文件,默認為空,不記錄日志,可以指定日子文件名
logfile "文件名"

1.4、使用Docker安裝

普通安裝redis后,redis默認只能夠本地連接(127.0.0.1),不能進行遠程訪問;

常規步驟:

  • 安裝redis鏡像:拉取官方的最新版本的鏡像

    docker pull redis:latest
  • 查看redis鏡像:查看是否已安裝了 redis

    docker images
  • 運行容器

    docker run -itd --name myRedis -p 6379:6379 redis
  • 查看容器安裝成功

    docker ps

支持遠程訪問:

  • 安裝redis鏡像:拉取官方的最新版本的鏡像

    docker pull redis:latest
  • 新建data和conf兩個文件夾,位置隨意

    mkdir -p /root/docker/redis/data
    mkdir -p /root/docker/redis/conf
  • 增加配置文件 redis.conf

    在剛才新建的redis/conf中新建文件redis.conf,內容如下:

    #bind 127.0.0.1 //允許遠程連接
    protected-mode no
    appendonly yes //持久化
    requirepass 123456 //密碼

注意:

1、以上文件(redis.conf)內容行與行之間不能帶有空格,否則新建容器后,容器狀態為stopped,無法啟動;

2、如果配置了redis密碼,在配置時除了需要redis的ip端口號外,也需要配置redis密碼;

  • 創建redis容器并啟動:

    docker run --name myRedis -p 6379:6379 -v /root/docker/redis/data:/data -v /root/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
  • 啟動成功,查看狀態

    docker ps

二、常用指令

2.1、常用數據類型

Redis存儲的是key-value結構的數據,其中key是字符串類型,value有五種常用到的數據類型

  • String —— 字符串類型(最常用)

  • Hash —— 字典類型(最常用)

  • List —— 列表類型

  • Set —— 集合類型

  • ZSet —— 有序集合類型

2.2、字符串常用命令

字符串類型string:普通字符串,Redis中最簡單的數據類型

指令說明
set key value設置指定key的值
get key獲取指定key的值
setex key seconds value設置置頂key的值,并將key的過期時間設置為seconds秒
setnx key value只有在key不存在時設置value的值

e g:

// 設置指定key所對應值
set name lihua
?
// 獲取指定key的值
get name
?
// 設置指定key的有效時間為20秒
setex age 20 zhang
?
// 當設置的key不存在時才會設置對應的值,存在時不設置
setnx score 98      // 不存在時返回1,存在時返回0

2.3、哈希常用命令

哈希hash:也叫散列,類似于java中的HashMap結構,hash特別適合存儲對象

指令說明
hset key field value將哈希表中的字段field的值設置為value
hget key field獲取存儲在哈希表中指定字段的值
hdel key field刪除存儲在哈希表中指定字段的值
hkeys key獲取哈希表中的所有字段
hvals key獲取哈希表中所有值

e g:

// 設置ID屬性為2的人的name屬性為zhang
hset 2 name zhang
?
// 獲取ID屬性為2的問的name屬性的值
hget 2 name
?
// 刪除id屬性為2的人的name屬性的值
hdel 2 name
?
// 獲取ID屬性為2的人的所有字段
hkeys 2
?
// 獲取ID屬性為2的人的所有字段值
hvals 2

2.4、列表常用命令

列表list:按照插入順序排序,可以有重復元素,類似java中的linkelist

指令說明
lpush key value1 [value2]將一個或多個值插入到列表的頭部
lrange key start stop獲取列表指定范圍內的元素
rpop key移除并獲取列表最后一個元素
llen key獲取類表的長度

eg:

// 向對應key中插如兩個值
lpush mylist 23 43
?
// 獲取對應key的指定范圍內的元素(頭部到尾部使用0 -1表示)
lrange mylist 0 -1
?
// 刪除并獲取列表中的最后一個
rpop mylist
?
// 獲取指定列表的長度
llen mylist

2.5、集合常用命令

集合set:無序集合,沒有重復元素,類似于java中的HashSet

指令說明
sadd key member1 [member2]向集合中添加一個或多個成員
smembers key返回集合中的所有成員
scard key獲取集合的成員數
sinter key1 [key2]返回所有指定集合的交集
sunion key1 [key2]返回所有集合的并集
srem key member1 [member2]刪除集合中一個或多個成員

e g:

// 向集合中添加兩個成員
sadd myset 223 344
?
// 返回集合中的所有元素
smembers myset
?
// 獲取集合的成員數
scard myset
?
// 返回兩個集合的交集
sinter myset1 myset2
?
// 返回兩個集合的并集
sunion myset2 myset2
?
// 刪除集合中的元素
srem myset 223

2.6、有序集合常用命令

有序集合sorted set |zset:集合中每個元素關聯一個double類型的分數,根據分數生序排序,沒有重復元素

指令說明
zadd key score1 member1 [score2 member2]向有序集合中體添加一個或多個成員
zrange key start stop [withscores]通過索引區間返回有序集合中的指定區間的元素
zincrby key increament member有序集合中對指定成員的分數加上增量increament
zrem key member [member]移除有序集合中的一個或者多個元素

eg:

// 向有序集合中添加一個成員并指定a的score值為10.0
zadd zset 10.0 a
?
// 查看有序集合中的所有成員的元素
zrange zset 0 -1
?
// 查看有序集合中的所有成員的元素和分數
zrange zset 0 -1 withscore
?
// 對有序成員中的a元素的分數值加5
zincrby zset 5.0 a
?
// 刪除有序集合中的指定元素
zrem zset b

2.7、通用命令

Redis的通用命令就是部分數據類型的,都可以使用的命令

命令說明
keys pattem查找所有符合給定模式pattem的key
exists key檢查給定的key是否存在
type key返回key所存儲的數據類型
del key1 [key2]刪除指定存在的key

eg:

// 返回所有的key
keys *// 返回以set開頭的所有key
keys set*
?
// 檢查具體key是否存在
exists tex
?
// 返回對應key存儲的數據類型
type tex
?
// 刪除key
del tex

三、在java程序中操作redis

在java程序中一般使用Spring Data Redis操作redis數據庫

3.1、redis的java客戶端

Redis的java客戶端有很多,常用的有幾種:

  • Jedis

  • Lettuce

  • Spring Data Redis

Spring Data Redis是Spring的一部分,對Redis底層開發包進行了高度封裝

3.2、Spring Data Redis的使用方法

操作步驟:

  • 導入Spring Data Redis的maven坐標

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 配置Redis數據源

 redis:host: IP地址port: 端口號password: 密碼database: 10    # 表示使用10號數據庫,redis默認創建16個數據庫
  • 編寫配置類,創建RedisTemplate對象

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
?
/*** Redis配置類*/
@Configuration
@Slf4j
public class RedisConfiguration {
?@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("開始創建Redis模版對象···");RedisTemplate redisTemplate = new RedisTemplate();// 設置redis的鏈接工廠對象redisTemplate.setConnectionFactory(redisConnectionFactory);// 設置redis key的序列化對象redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}
  • 通過RedisTemplate對象中的opsFor***來獲取具體對象操作Redis,這里列舉個別

/*** Redis測試類*/
@SpringBootTest
public class RedisTemplateText {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void textRedisType(){/*** 操作字符串類類型數據*/// 添加字符串類型數據-并設置有效時間redisTemplate.opsForValue().set("name","zhangshanc",20, TimeUnit.MILLISECONDS);// 對應key不存在時設置對應的key的值--對應redis中的setnx指令redisTemplate.opsForValue().setIfAbsent("age","12");
?/*** 操作哈希類型數據--其他指令見名知意*/// 添加hash類型的數據使用put--對應redis中的指令為hsetredisTemplate.opsForHash().put("11","name","tom");}
}

注意:redis中通用類型的數據直接使用RedisTemplate對象直接操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40409.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40409.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40409.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【APK】SDKManager運行后閃退

本地JDK已安裝&#xff0c;且配置了環境變量&#xff0c;未安裝 android studiio 問題描述&#xff1a;右鍵以管理員身份運行 SDKManager&#xff0c;終端窗口閃退 問題原因&#xff1a;未找到正確的Java路徑 解決辦法&#xff1a; 1.修改tools目錄下的 android.bat 文件&am…

langchain 入門中篇:數據封裝,Memory 封裝

數據的處理流程可以看一張圖來幫助理解 數據來源可以是網絡&#xff0c;可以是郵件&#xff0c;可以是本地文件 經過 Document Loaders 加載&#xff0c;再在 Transform 階段對文檔進行 split, filter, translate, extract metadata 等操作&#xff0c;之后在 Embed 階段進行向…

Keil用ST-LINK下載STM32程序后不自動運行

之后程序可以運行了&#xff0c;但是串口還沒有輸出&#xff0c;在debug模式下都是ok的。

加權 KNN 算法的原理與詳解

加權kNN&#xff0c;k近鄰算法的增強改進版本。 加權KNN算法 近鄰算法&#xff08;k-Nearest Neighbors, kNN&#xff09;是一種用于分類和回歸的非參數方法。它的基本思想是“看鄰居”&#xff0c;即通過查找離目標點最近的 K 個數據點&#xff0c;來判斷目標點的類別或數值。…

docker安裝elasticesarch-head

安裝 Elasticsearch-Head 通常涉及以下步驟&#xff1a; 拉取 Elasticsearch-Head 的 Docker 鏡像。 運行 Elasticsearch-Head 容器并連接到 Elasticsearch 實例。 以下是具體的命令&#xff1a; 拉取 Elasticsearch-Head 的 Docker 鏡像 docker pull mobz/elasticsearch-…

Sqlserver 如何創建全局只讀賬號?

由于SQL Server不支持全局數據庫權限&#xff0c;因此需要在每個數據庫中創建用戶并授予其只讀權限。可以使用動態SQL腳本來為所有現有數據庫設置權限&#xff0c;具體腳本如下 ##創建登陸賬號CREATE LOGIN user01 WITH PASSWORD password; ##除了系統庫外給user01 db_datare…

FactoryBean原理及用法

它的作用是用制造創建過程較為復雜的產品, 如 SqlSessionFactory, 但 Bean 已具備等價功能 使用 被 FactoryBean 創建的產品 會認為創建、依賴注入、Aware 接口回調、前初始化這些都是 FactoryBean 的職責, 這些流程都不會走 唯有后初始化的流程會走, 也就是產品可以被代理增…

學習aurora64/66b.20240703

簡介 The AMD LogiCORE?IP Aurora 64B/66B core是一種可擴展的輕量級高數據速率鏈路層協議&#xff0c;用于高速串行通信。該協議是開放的&#xff0c;可以使用AMD設備技術實現。 Aurora 64B/66B是一種輕量級的串行通信協議&#xff0c;適用于多千兆位鏈路 (如下圖所示)。它…

【MATLAB源碼-第139期】基于matlab的OFDM信號識別與相關參數的估計,高階累量/小波算法調制識別,循環譜估計,帶寬估計,載波數目估計等等。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 在現代無線通信系統中&#xff0c;正交頻分復用&#xff08;OFDM&#xff09;因其高效的頻譜利用率、強大的抗多徑衰落能力以及靈活的帶寬分配等優勢&#xff0c;成為了一種非常重要的調制技術。然而&#xff0c;隨著無線通信…

采沙船智能監測識別攝像機

對于現代河流管理來說&#xff0c;采沙船智能監測識別攝像機正逐漸成為解決非法采砂和保護河流生態環境的重要工具。這類攝像機通過先進的視覺識別和數據分析技術&#xff0c;有效監控和管理河道上的采沙行為&#xff0c;對保護水域資源和改善生態環境具有顯著的意義。 采沙船智…

Linux容器篇-使用kubeadm搭建一個kubernetes集群

kubernetes集群架構和組件 master節點組件 kube-apiserver&#xff1a;Kubernetes API&#xff0c;集群的統一入口&#xff0c;各組件的協調者&#xff0c;以RESTful API提供接口服務&#xff0c;所有對象資源的增刪改查和監聽操作都交給APIserver處理后再交給Etcd存儲。 kube…

學習Mybatis

Mybatis 第一節 引言 1. 什么是框架 框架是一個半成品&#xff0c;解決了軟件開發過程中的普遍性問題&#xff0c;簡化了開發步驟&#xff0c;提高了開發效率。 2. 什么是ORM ORM全稱為Object Relational Mapping&#xff0c;意為對象關系映射&#xff0c;主要實現了將程序…

usecallback()與usememo()

簡單的說 都是用來監聽數據變化 來進行控制渲染、減少不必要的渲染 、優化性能 usecallback()是用來監聽數據變化從而調用方法 usememo()是用來監聽數據變化從而改變數據 使用return返回變化的數據 當然return 也可以返回方法 所以usememo()可以代替usecallback() 下面詳解 …

常見的編碼技術簡介

常見的編碼技術簡介 文章目錄 常見的編碼技術簡介1. 字符編碼1.1 ASCII1.2 Unicode 2. 數據傳輸編碼2.1 Base系列編碼2.1.1 Base642.1.2 Base162.1.3 Base322.1.4 Base852.1.5 其他Base編碼 2.2 URL編碼2.3 JSON2.4 XML2.5 Protobuf (Protocol Buffers) 1. 字符編碼 1.1 ASCII…

AI是在幫助開發者還是取代他們?——探討AI在軟件開發中的角色與未來

引言 隨著人工智能技術的迅猛發展&#xff0c;AI工具在軟件開發中的應用越來越廣泛。有人認為AI可以顯著提升開發者的效率&#xff0c;而也有人擔心AI會取代開發者的工作。本文將從三個方面探討AI在軟件開發中的角色&#xff1a;AI工具現狀、AI對開發者的影響以及AI開發的未來…

學習springAOP

第三章 Spring AOP 第一節 AOP 簡介 1. 概念 AOP全稱為Aspect Oriented Programming&#xff0c;表示面向切面編程。何為切面呢&#xff1f; 由此可以得出&#xff0c;切面是一種將那些與業務無關&#xff0c;但業務模塊都需要使用的功能封裝起來的技術。這樣便于減少系統的…

昇思25天學習打卡營第4天|應用實踐

昇思25天學習打卡營第4天 文章目錄 昇思25天學習打卡營第4天基于 MindSpore 實現 BERT 對話情緒識別模型簡介環境配置數據集數據加載和數據預處理input_idsattention_mask 模型構建模型驗證模型推理自定義推理數據集 打卡記錄 基于 MindSpore 實現 BERT 對話情緒識別 模型簡介…

奧比中光astra_pro相機使用記錄

一、信息獲取 1、官網 用于了解產品信息 http://www.orbbec.com.cn/sys/37.html 2、開發者社區 咨詢問題下載開發部https://developer.orbbec.com.cn/ 二 、windowvs19 1、相機型號 orbbec_astro_pro 根據對應的型號找到需要的包工具 踩坑1&#xff0c;因為這個相機型號…

第20章 Mac+VSCode配置C++環境

1. 下載VSCode VSCode下載地址在mac終端里輸入xcode- select --install命令&#xff0c;根據提示安裝xcode工具。 2. 安裝插件&#xff08;4個&#xff09; 打開VScode&#xff0c;點擊應用右側菜單欄 C/C&#xff08;必裝&#xff09; Code Runner&#xff08;必裝&#xf…

UCOS-III 任務調度與就緒列表管理

01. 就緒優先級位圖 在實時操作系統中&#xff0c;任務調度的效率至關重要。UCOS-III通過就緒優先級位圖來快速查找最高優先級的就緒任務&#xff0c;從而實現高效調度。就緒優先級位圖是一個按位表示的結構&#xff0c;每個位代表一個優先級&#xff0c;當某個優先級上有任務就…