Redis初識(shí)、Redis的安裝與啟動(dòng)、Redis命令及Java客戶(hù)端詳解
前言
在高并發(fā)場(chǎng)景成為常態(tài)的后端系統(tǒng)中,Redis 已成為不可或缺的核心組件。本文主要是講Redis基礎(chǔ):從基礎(chǔ)概念入手,教你Linux環(huán)境安裝與常用命令實(shí)戰(zhàn),系統(tǒng)掌握 Redis 的核心能力,為進(jìn)階學(xué)習(xí)與實(shí)際項(xiàng)目應(yīng)用夯實(shí)基礎(chǔ)。
本文記錄在學(xué)習(xí)Redis過(guò)程中的關(guān)鍵技術(shù)實(shí)踐與踩坑思考,包含個(gè)人在實(shí)際學(xué)習(xí)中的具體過(guò)程與遇到的問(wèn)題以及知識(shí)點(diǎn)總結(jié)
1.初識(shí)Redis
1.1NoSQL
| SQL | NoSQL | |
|---|---|---|
| 數(shù)據(jù)結(jié)構(gòu) | 結(jié)構(gòu)化 | 非結(jié)構(gòu)化 |
| 數(shù)據(jù)關(guān)聯(lián) | 關(guān)聯(lián)的 | 無(wú)關(guān)聯(lián)的 |
| 查詢(xún)方法 | SQL查詢(xún) | 非SQL |
| 事務(wù)特性 | ACID | BASE |
| 存儲(chǔ)方式 | 磁盤(pán) | 內(nèi)存 |
| 擴(kuò)展性 | 垂直 | 水平 |
| 使用場(chǎng)景 | 數(shù)據(jù)結(jié)構(gòu)固定、相關(guān)業(yè)務(wù)對(duì)數(shù)據(jù)安全性一致性要求高 | 數(shù)據(jù)結(jié)構(gòu)不固定、對(duì)數(shù)據(jù)安全性一致性要求不高、對(duì)性能要求高 |
NoSQL的數(shù)據(jù)結(jié)構(gòu):
- 鍵值結(jié)構(gòu)(Redis)
- 文檔類(lèi)型(MongoDB)
- 列類(lèi)型(HBase)
- Graph類(lèi)型(Neo4j)
1.2Redis
遠(yuǎn)程詞典服務(wù)器,基于內(nèi)存的鍵值型NoSQL數(shù)據(jù)庫(kù)
特征:
- 鍵值型,value支持多種不同數(shù)據(jù)結(jié)構(gòu),功能豐富
- 單線(xiàn)程,每個(gè)命令具備原子性
- 低延遲,速度快(基于內(nèi)存、IO多路復(fù)用、良好的編碼)
- 支持?jǐn)?shù)據(jù)持久化
- 支持主從集群、分片集群
- 支持多語(yǔ)言客戶(hù)端
1)安裝Redis
官網(wǎng):Redis - The Real-time Data Platform
打開(kāi)虛擬機(jī),打開(kāi)終端 我這里用的是VMware+Finalshell
切換為root管理員:輸入
su -,回車(chē)后輸入密碼安裝Redis所需的gcc依賴(lài)
yum install -y gcc tcl
上傳壓縮包并解壓
把Redis安裝包放到
/usr/local/src下進(jìn)入該目錄下
cd /usr/local/src/
解壓
tar -zxvf redis-6.2.6.tar.gz
進(jìn)入redis安裝目錄
cd redis-6.2.6
運(yùn)行編譯命令
make && make install

沒(méi)有錯(cuò)誤就證明安裝好了
默認(rèn)安裝路徑是
/usr/local/bin
reids-cli:是redis提供的命令行客戶(hù)端
redis-server:是redis的服務(wù)端啟動(dòng)腳本
redis-sentinel:是redis的哨兵啟動(dòng)腳本
哨兵是 Redis 的一種高可用方案,用來(lái):
- 監(jiān)控主節(jié)點(diǎn)
- 自動(dòng)故障轉(zhuǎn)移
- 自動(dòng)選舉新的主節(jié)點(diǎn)
2)啟動(dòng)Redis
Redis的啟動(dòng)方式:
- 默認(rèn)啟動(dòng)
- 指定配置啟動(dòng)
- 開(kāi)機(jī)自啟
一.默認(rèn)啟動(dòng)
安裝完成后,在任意目錄輸入
redis-server
即可啟動(dòng)

如圖這樣就啟動(dòng)成功了
此為前臺(tái)啟動(dòng),會(huì)阻塞整個(gè)會(huì)話(huà)窗口,窗口關(guān)閉或者按下Ctrl + C就會(huì)將Redis停止
二.指定配置啟動(dòng)
要想讓Redis后臺(tái)啟動(dòng),就必須修改Redis的配置文件,該文件就在/usr/local/src/redis-6,2,6,名為redis.conf
首先備份一份配置文件,先進(jìn)到該目錄下
cd /usr/local/src/redis-6.2.6/
備份配置文件
cp redis.conf redis.conf.bck
開(kāi)始修改配置文件
vi redis.conf
常見(jiàn)配置

其他配置

tips:快速查找
輸入
/關(guān)鍵字按下Enter匹配到第一個(gè)關(guān)鍵字所在地方按n調(diào)到下一個(gè)匹配,按N調(diào)到上一個(gè)匹配
找到要修改的地方后,按下i,左下角出現(xiàn)-- INSERT --,表示進(jìn)入插入模式,按Esc回到普通模式
1.修改bind

2.修改daemonize

3.添加密碼

4.記錄日志,指定日志文件
![]()
最后 保存文件
按Esc退出插入模式,輸入:
:wq
按下回車(chē)進(jìn)行保存
想要指定配置啟動(dòng),只需在啟動(dòng)Redis時(shí)指定配置文件:
redis-server redis.conf
若處于redis安裝目錄下,即可省略配置文件的全路名

本次啟動(dòng)后沒(méi)有剛才那些信息,用:
ps -ef|grep redis
可以檢查redis是否成功啟動(dòng)
停止進(jìn)程用:(后面的數(shù)改錯(cuò)自己對(duì)應(yīng)的PID)
kill -9 75659
也可以用:
redis-cli -a 密碼 shutdown
三.開(kāi)機(jī)自啟
首先新建一個(gè)系統(tǒng)服務(wù)文件:
vi /etc/systemd/system/redis.service
內(nèi)容如下:
[Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
然后重載系統(tǒng)服務(wù):
systemctl daemon-reload
接下來(lái)用下面這組命令來(lái)操作redis了:
# 啟動(dòng) systemctl start redis # 停止 systemctl stop redis # 重啟 systemctl restart redis # 查看狀態(tài) systemctl status redis
執(zhí)行下面的命令,可以讓redis開(kāi)機(jī)自啟:
systemctl enable redis
3)Redis客戶(hù)端
安裝好Redis后,操作Redis實(shí)現(xiàn)數(shù)據(jù)的CRUD需要用到Redis客戶(hù)端:
- 命令行客戶(hù)端
- 圖形化桌面客戶(hù)端
- 編程客戶(hù)端
Redis安裝完成后就自帶了命令行客戶(hù)端:redis-cli
redis-cli [options] [commonds]
常見(jiàn)的options有:
-h 127.0.0.1:指定要連接的redis客戶(hù)端IP地址,默認(rèn)是127.0.0.1-p 6379:指定要連接的redis節(jié)點(diǎn)的端口,默認(rèn)是6379-a 123456:指定redis的訪(fǎng)問(wèn)密碼也可以使用客戶(hù)端之后再輸入密碼
AUTH 密碼
commonds是redis的操作命令:
ping:給redis服務(wù)端做心跳測(cè)試,服務(wù)端正常會(huì)返回PONG
不指定commond時(shí),會(huì)進(jìn)入redis-cli的交互控制臺(tái)
配置圖形化桌面客戶(hù)端:
這里我用的是Another Redis
**1.**首先輸入exit退出剛才的命令行客戶(hù)端
2.開(kāi)放6379端口
不開(kāi)放端口,外部設(shè)備就連不上你的服務(wù)
先看看防火墻開(kāi)沒(méi)開(kāi):
systemctl status firewalld
如果防火墻在運(yùn)行就需要開(kāi)放端口:
firewall-cmd --permanent --add-port=6379/tcp firewall-cmd --reload
--permanent意思是:把規(guī)則寫(xiě)入配置文件(永久保存)firewall-cmd --reload作用是:重新讀取配置文件,應(yīng)用新的防火墻規(guī)則
3.連接ARDM
Host: 虛擬機(jī)IP
Port: 6379
Password: 你設(shè)置的密碼
2.Redis命令
2.1數(shù)據(jù)結(jié)構(gòu)介紹
Redis是一個(gè)key-value的數(shù)據(jù)庫(kù),key一般是String類(lèi)型,value的類(lèi)型多種多樣:

2.2通用命令
KEYS:查看符合模版的所有的keyDEL:刪除一個(gè)指定的keyEXISTS:判斷key是否存在EXPIRE:給一個(gè)key設(shè)置一個(gè)有效期,有效期到底key就會(huì)自動(dòng)刪除TTL:查看一個(gè)key的剩余有效期
通過(guò)help [command]可以查看一個(gè)命令的具體用法

2.3String類(lèi)型
字符串類(lèi)型,其value是字符串,根據(jù)字符串的類(lèi)型不同,又可以分成三類(lèi):
- string:普通字符串
- int:整數(shù)類(lèi)型,可以做自增自減操作
- float:浮點(diǎn)類(lèi),可以做自增自減操作型
不管是哪種格式,底層都是字節(jié)數(shù)組形式存儲(chǔ),只不過(guò)編碼方式不同
字符串類(lèi)型的最大空間不能超過(guò)512m
String常見(jiàn)命令:
SET:添加或修改已經(jīng)存在的一個(gè)String類(lèi)型的鍵值對(duì)
GET:根據(jù)key獲取String類(lèi)型的value
MSET:批量添加多個(gè)String類(lèi)型的鍵值對(duì)
MGET:根據(jù)多個(gè)key獲取多個(gè)String類(lèi)型的value
INCR:讓一個(gè)整型的key自增
INCRBY:讓一個(gè)整型的key自增并指定步長(zhǎng)
eg:
incrby num 2讓num自增2INCRBYFLOAT:讓一個(gè)浮點(diǎn)類(lèi)型的key自增并指定步長(zhǎng)
SETNX:添加一個(gè)String類(lèi)型的鍵值對(duì),前提是key不存在,否則不執(zhí)行
SETEX:添加一個(gè)String類(lèi)型的鍵值對(duì),并且指定有效期
2.4key的層級(jí)格式
Redis的key允許有多個(gè)單詞形成層級(jí)結(jié)構(gòu),多個(gè)單詞用:隔開(kāi),eg:
項(xiàng)目名:業(yè)務(wù)名:類(lèi)型:id
(格式不固定)
2.5Hash
Hash結(jié)構(gòu)可以將對(duì)象中的每個(gè)字段獨(dú)立存儲(chǔ),可以針對(duì)單個(gè)字段做CRUD

Redis的常見(jiàn)命令:
- HSET key field value:添加或修改Hash類(lèi)型key的field的值
- HGET key field:獲取一個(gè)Hash類(lèi)型key的field的值
- HMSET:批量添加Hash類(lèi)型key的field的值
- HMGET:批量獲取Hash類(lèi)型key的field的值
- HGETALL:獲取一個(gè)hash類(lèi)型的key中的所有的field和value
- HKEYS:獲取一個(gè)hash類(lèi)型的key中的所有的field
- HVALS:獲取一個(gè)hash類(lèi)型的key中的所有的value
- HINCRBY:讓一個(gè)hash類(lèi)型key的字段自增并指定步長(zhǎng)
- HSETNX:添加一個(gè)hash類(lèi)型的key的field值,前提是這個(gè)field不存在,否則不執(zhí)行
2.6List類(lèi)型
與Java中的LinkedList類(lèi)型,可以視為雙向鏈表,既支持正向檢索也支持反向檢索
特征:
- 有序
- 元素可以重復(fù)
- 插入和刪除快
- 查詢(xún)速度一般
List常見(jiàn)命令:
- LPUSH key element … :向列表左側(cè)插入一個(gè)或多個(gè)元素
- LPOP key:移除并返回列表左側(cè)的第一個(gè)元素,沒(méi)有則返回nil
- RPUSH key element … :向列表右側(cè)插入一個(gè)或多個(gè)元素
- RPOP key:移除并返回列表右側(cè)的第一個(gè)元素
- LRANGE key start end:返回一段角標(biāo)范圍內(nèi)的所有元素
- BLPOP和BRPOP:與LPOP和RPOP類(lèi)似,只不過(guò)在沒(méi)有元素時(shí)等待指定時(shí)間,而不是直接返回nil
在Redis中,
nil表示空值
2.7Set類(lèi)型
與Java中的HashSet類(lèi)似
特征:
- 無(wú)序
- 元素不可重復(fù)
- 查找快
- 支持交集、并集、差集等功能
Set常用命令:
- SADD key member …:向set中添加一個(gè)或多個(gè)元素
- SREM key member …:移除set中的指定元素
- SCARD key:返回set中元素的個(gè)數(shù)
- SISMEMBER key member:判斷一個(gè)元素是否存在于set中
- SMEMBERS:獲取set中的所有元素
- SINTER key1 key2 …:求key1和key2的交集
- SDIFF key1 key2 …:求key1和key1的差集
- SUNION key1 key2 …:求key1和key1的并集
2.8SortedSet類(lèi)型
Redis的SortedSet是一種可排序的set集合,SortedSet中的每一個(gè)元素都帶有一個(gè)score屬性,可以基于score屬性進(jìn)行排序,底層的實(shí)現(xiàn)是一個(gè)跳表+hash表
特征:
- 可排序
- 元素不重復(fù)
- 查詢(xún)速度快
(因?yàn)镾ortedSet的可排序特性,經(jīng)常被用來(lái)實(shí)現(xiàn)排行榜)
SortedSet的常見(jiàn)命令:
- ZADD key score member:添加一個(gè)或多個(gè)元素到sorted set,如果已經(jīng)存在則更新其score值
- ZREM key member:刪除sorted set中的一個(gè)指定元素
- ZSCORE key member:獲取sorted set中的指定元素的score值
- ZRANK key member:獲取sorted set中的指定元素的排名
- ZCARD key:獲取sorted set中的元素個(gè)數(shù)
- ZCOUNT key min max:統(tǒng)計(jì)score值在給定范圍內(nèi)的所有元素的個(gè)數(shù)
- ZINCRBY key increment member:讓sorted set中的指定元素自增,步長(zhǎng)為指定的increment值
- ZRANGE key min max:按照score排序后,獲取指定排名范圍內(nèi)的元素
- ZRANGEBYSCORE key min max:按照score排序后,獲取指定score范圍內(nèi)的元素
- ZDIFF、ZINTER、ZUNION:求差集、交集、并集
3.Redis的Java客戶(hù)端
在Redis官網(wǎng)中提供了各種語(yǔ)言的客戶(hù)端**https://redis.io/clients/**

3.1Jedis快速入門(mén)
Jedis官網(wǎng)地址redis/jedis: Redis Java client
具體步驟:
引入依賴(lài)
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>7.1.0</version> </dependency>建立連接
private Jedis jedis; @BeforeEach void setUp(){ //1.建立連接 jedis = new Jedis("192.168.227.128",6379); //2.設(shè)置密碼 jedis.auth("123456"); //3.選擇庫(kù) jedis.select(0); }測(cè)試string
@Test public void testJedis(){ //存入數(shù)據(jù) String result = jedis.set("name", "張三"); System.out.println("result = " + result); //獲取數(shù)據(jù) String name = jedis.get("name"); System.out.println("name = " + name); }關(guān)閉資源
@AfterEach void tearDown(){ if(jedis != null){ jedis.close(); } }為啥要判空?
因?yàn)槿绻?jedis 還沒(méi)創(chuàng)建成功就是 null,直接 close() 會(huì)報(bào)空指針異常
3.2Jedis連接池
Jedis本身線(xiàn)程是不安全的,并且頻繁的創(chuàng)建和銷(xiāo)毀連接會(huì)有性能損耗,因此推薦用Jedis連接池代替Jedis的直連方式
為什么 Jedis 不安全?
因?yàn)椋阂粋€(gè) Jedis 對(duì)象 = 一個(gè) TCP 連接,多個(gè)線(xiàn)程共用同一個(gè)連接是危險(xiǎn)的
可以理解為:三個(gè)人同時(shí)對(duì)著同一根電話(huà)線(xiàn)說(shuō)話(huà),聲音會(huì)混在一起。
使用連接池JedisPool
每個(gè)線(xiàn)程:從池里拿一個(gè) Jedis,用完歸還
public class JedisConnectionFactory {
private static JedisPool jedisPool;
static{
//配置連接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(8);//最大連接數(shù)
poolConfig.setMaxIdle(8);//最大空閑連接
poolConfig.setMinIdle(0);//最小空閑連接
poolConfig.setMaxWaitMillis(10000);//最大等待時(shí)間
//創(chuàng)建連接池對(duì)象
jedisPool = new JedisPool(poolConfig,"192.168.227.128",6379,1000,"123456");
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUp(){
//1.建立連接
jedis = JedisConnectionFactory.getJedis();
//2.選擇庫(kù)
jedis.select(0);
}
@Test
public void testJedis(){
//存入數(shù)據(jù)
String result = jedis.set("name", "張三");
System.out.println("result = " + result);
//獲取數(shù)據(jù)
String name = jedis.get("name");
System.out.println("name = " + name);
}
@AfterEach
void tearDown(){
if(jedis != null){
jedis.close();//把連接歸還給連接池
}
}
}3.3SpringDateRedis
SpringDate是Spring中數(shù)據(jù)操作的模塊,包含對(duì)各種數(shù)據(jù)庫(kù)的集成,其中對(duì)Redis的集成模塊就叫SpringDateRedis
官網(wǎng)地址:https://spring.io/projects/spring-data-redis
- 提供了對(duì)不同 Redis 客戶(hù)端的整合(Lettuce 和 Jedis)
- 提供了 RedisTemplate 統(tǒng)一 API 來(lái)操作 Redis
- 支持 Redis 的發(fā)布訂閱模型
- 支持 Redis 哨兵和 Redis 集群
- 支持基于 Lettuce 的響應(yīng)式編程
- 支持基于 JDK、JSON、字符串、Spring 對(duì)象的數(shù)據(jù)序列化及反序列化
- 支持基于 Redis 的 JDK Collection 實(shí)現(xiàn)
SpringDateRedis中提供了RedisTemplate工具類(lèi),其中封裝了各種對(duì)Redis的操作

3.4RedisTemplate入門(mén)
具體步驟:
引入依賴(lài)
SpringBoot提供了對(duì)SpringDateRedis的支持,只需在創(chuàng)建項(xiàng)目時(shí)勾選依賴(lài)即可
配置文件
在application.yml文件里配置
spring: data: redis: host: 192.168.227.128 port: 6379 password: 123456 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 100ms(新版SpringBoot中spring和redis間需要加個(gè)data)
注入RedisTemplate
@Autowired private RedisTemplate redisTemplate;編寫(xiě)測(cè)試
@SpringBootTest class RedisDemoApplicationTests { @Autowired private RedisTemplate redisTemplate; @Test void testString() { //寫(xiě)入一條String數(shù)據(jù) redisTemplate.opsForValue().set("name", "zs"); //獲取String數(shù)據(jù) System.out.println(redisTemplate.opsForValue().get("name")); } }
3.5RedisSerializer
RedisTemplate可以接收任意Object作為值寫(xiě)入Redis,只不過(guò)寫(xiě)入前會(huì)把Object序列化為字節(jié)形式
當(dāng)執(zhí)行這條語(yǔ)句時(shí):
redisTemplate.opsForValue().set("name", "zs");Spring 會(huì):
Java對(duì)象 → 序列化 → byte[] → 發(fā)送給Redis
會(huì)把對(duì)象序列化,

占用內(nèi)存,可讀性還差
為啥默認(rèn)用JDK序列化?
因?yàn)?SpringBoot 設(shè)計(jì)時(shí)考慮:Redis 不只是存 String
,更常用來(lái)存 Java 對(duì)象JDK 序列化可以直接把對(duì)象變成二進(jìn)制存進(jìn)去
為了解決這種問(wèn)題,我們可以自定義RedisTemplate的序列化方式
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//創(chuàng)建RedisTemplate對(duì)象
RedisTemplate<String,Object> template = new RedisTemplate<>();
//設(shè)置連接工廠(chǎng)
template.setConnectionFactory(redisConnectionFactory);
//創(chuàng)建json序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
//設(shè)置key的序列化
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
//設(shè)置value的序列化
template.setValueSerializer(jsonRedisSerializer);
template.setHashValueSerializer(jsonRedisSerializer);
//返回
return template;
}
}
3.6StringRedisTemplate

為了節(jié)省內(nèi)存空間,我們并不會(huì)使用JSON序列化器來(lái)處理value,而是統(tǒng)一使用String序列化器,要求只能存儲(chǔ)String類(lèi)型的key和value
當(dāng)要存儲(chǔ)Java對(duì)象時(shí),手動(dòng)完成對(duì)象的序列化和反序列化
Spring默認(rèn)提供了一個(gè)SpringRedisTemplate類(lèi),它的key和value的序列化方式默認(rèn)就是String方式,省去了自定義RedisTemplate的過(guò)程
@SpringBootTest
class RedisDemoApplicationTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void testString() {
//寫(xiě)入一條String數(shù)據(jù)
stringRedisTemplate.opsForValue().set("name", "zs");
//獲取String數(shù)據(jù)
System.out.println(stringRedisTemplate.opsForValue().get("name"));
}
@Test
public void testSaveUser() {
//創(chuàng)建對(duì)象
User user = new User("張三", 20);
//手動(dòng)序列化
String json = mapper.writeValueAsString(user);
//寫(xiě)入數(shù)據(jù)
stringRedisTemplate.opsForValue().set("user:100",json);
//獲取數(shù)據(jù)
String jsonUser = stringRedisTemplate.opsForValue().get("user:100");
//手動(dòng)反序列化
User user1 = mapper.readValue(jsonUser, User.class);
System.out.println("user1 = " + user1);
}
}
ObjectMapper 是 Jackson 提供的 “對(duì)象 ↔ JSON 轉(zhuǎn)換器”。
它的作用就是:
Java對(duì)象 ? JSON字符串

3.7RedisTemplate操作Hash類(lèi)型
@Test
public void testHash(){
stringRedisTemplate.opsForHash().put("user:400","name","李四");
stringRedisTemplate.opsForHash().put("user:400","age","20");
Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:400");
System.out.println("entries = " + entries);
}總結(jié)
到此這篇關(guān)于Redis初識(shí)、Redis的安裝與啟動(dòng)、Redis命令及Java客戶(hù)端的文章就介紹到這了,更多相關(guān)Redis安裝與啟動(dòng)、命令及Java客戶(hù)端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在CentOS 7環(huán)境下安裝Redis數(shù)據(jù)庫(kù)詳解
Redis是一個(gè)開(kāi)源的、基于BSD許可證的,基于內(nèi)存的、鍵值存儲(chǔ)NoSQL數(shù)據(jù)本篇文章主要介紹了在CentOS 7環(huán)境下安裝Redis數(shù)據(jù)庫(kù)詳解,有興趣的可以了解一下。2016-11-11
淺談redis內(nèi)存數(shù)據(jù)的持久化方式
這篇文章主要介紹了淺談redis內(nèi)存數(shù)據(jù)的持久化方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Redis教程(二):String數(shù)據(jù)類(lèi)型
這篇文章主要介紹了Redis教程(二):String數(shù)據(jù)類(lèi)型,本文講解了String數(shù)據(jù)類(lèi)型概述、相關(guān)命令列表、命令使用示例三部分內(nèi)容,需要的朋友可以參考下2015-04-04
redis實(shí)現(xiàn)存儲(chǔ)帖子的點(diǎn)贊狀態(tài)和數(shù)量的示例代碼
使用Redis來(lái)實(shí)現(xiàn)點(diǎn)贊功能是一種高效的選擇,因?yàn)镽edis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù),適用于處理高并發(fā)的數(shù)據(jù)操作,這篇文章主要介紹了redis實(shí)現(xiàn)存儲(chǔ)帖子的點(diǎn)贊狀態(tài)和數(shù)量的示例代碼,需要的朋友可以參考下2023-09-09
Redis?鍵值對(duì)(key-value)數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法
Redis 的鍵值對(duì)中的 key 就是字符串對(duì)象,而 value 可以是字符串對(duì)象,也可以是集合數(shù)據(jù)類(lèi)型的對(duì)象,比如 List 對(duì)象,Hash 對(duì)象、Set 對(duì)象和 Zset 對(duì)象,這篇文章主要介紹了Redis?鍵值對(duì)數(shù)據(jù)庫(kù)是怎么實(shí)現(xiàn)的,需要的朋友可以參考下2024-05-05
Redis緩存-序列化對(duì)象存儲(chǔ)亂碼問(wèn)題的解決
這篇文章主要介紹了Redis緩存-序列化對(duì)象存儲(chǔ)亂碼問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Redis實(shí)現(xiàn)分布式鎖和等待序列的方法示例
這篇文章主要介紹了Redis實(shí)現(xiàn)分布式鎖和等待序列的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06

