Redis安裝及使用詳解

来源:https://www.cnblogs.com/xuyiqing/archive/2019/03/22/10565904.html
-Advertisement-
Play Games

推薦在Linux系統上安裝,這裡我採用CentOS6: Redis採用3.0.0版本,官網下載即可 由於Redis是C語言編寫,需要安裝gcc(部分Linux自帶gcc) 解壓安裝包: 編譯redis源碼: 安裝: 啟動redis: 第一種:不推薦 第二種:使用配置文件 修改daemonize為ye ...


推薦在Linux系統上安裝,這裡我採用CentOS6:

Redis採用3.0.0版本,官網下載即可

由於Redis是C語言編寫,需要安裝gcc(部分Linux自帶gcc)

yum install gcc-c++

解壓安裝包:

tar -zxvf redis-3.0.0.tar.gz

編譯redis源碼:

cd redis-3.0.0
make

安裝:

make install PREFIX=/usr/local/redis

啟動redis:

第一種:不推薦

cd /usr/local/redis/bin
./redis-server

第二種:使用配置文件

cd redis-3.0.0
cp redis.conf /usr/local/redis/bin
vi /usr/local/redis/bin/redis.conf

修改daemonize為yes,然後:wq保存

啟動:

./redis-server redis.conf

關閉:

./redis-cli shutdown

 

連接redis:Redis預設是16個資料庫

第一種:直接使用自帶客戶端連接

./redis-cli -h 127.0.0.1 -p 6379

第二種:使用windows的圖形化界面客戶端連接(直觀)

註意:如果有連接不到但是確定已經開啟了redis的情況,需要配置防火牆

 

重點要關註的是第三點:Java連接,稍後再說,先來看一看數據類型

 

在自帶客戶端中進行操作:選擇第一個(也就是redis-0)資料庫

127.0.0.1:6379> select 0
OK

 

String數據類型:

127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"
127.0.0.1:6379> 

 

多條信息存儲和獲取:

127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> 

 

根據key刪除信息:

127.0.0.1:6379> del k1 k2
(integer) 2

 

數值增減:

遞增:

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"
127.0.0.1:6379> 
127.0.0.1:6379> incrby num 2
(integer) 2
127.0.0.1:6379> incrby num 2
(integer) 4
127.0.0.1:6379> incrby num 2
(integer) 6
127.0.0.1:6379> get num
"6"

遞減:

127.0.0.1:6379> decr num
(integer) -1
127.0.0.1:6379> decr num
(integer) -2
127.0.0.1:6379> decr num
(integer) -3
127.0.0.1:6379> get num
"-3"
127.0.0.1:6379> decrby num 3
(integer) -3
127.0.0.1:6379> decrby num 3
(integer) -6
127.0.0.1:6379> decrby num 3
(integer) -9
127.0.0.1:6379> get num
"-9"

 

一些其他命令的示範:

127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str
"hello world!"

 

Hash類型:可以理解為HashMap

代替Hash類型的方式:將需要保存的信息轉換成JSON字元串

hset命令,插入和更新沒有區分

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hset user password root
(integer) 1

多條插入:

127.0.0.1:6379> hmset user username root password root
OK

當不存在時候賦值:當欄位不存在時賦值,存在的話不做任何操作

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hsetnx user username admin
(integer) 0
127.0.0.1:6379> 

 取Hash中的值:

127.0.0.1:6379> hget user username
"root"
127.0.0.1:6379> hmget user username password
1) "root"
2) "123"
127.0.0.1:6379> hgetall user
1) "username"
2) "root"
3) "password"
4) "123"

 刪除Hash中的欄位:

127.0.0.1:6379> hdel user username
(integer) 1
127.0.0.1:6379> hgetall user
1) "password"
2) "123"

Hash欄位增加數字:

127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hincrby user age 2
(integer) 32
127.0.0.1:6379> hget user age
"32"

 判斷欄位是否存在:

127.0.0.1:6379> hexists user age
(integer) 1
127.0.0.1:6379> hexists user sex
(integer) 0

只獲取key或者value:

127.0.0.1:6379> hkeys user
1) "password"
2) "age"
127.0.0.1:6379> hvals user
1) "123"
2) "32"

獲取大小:

127.0.0.1:6379> hlen user
(integer) 2

 

在實際中的應用:比如添加商品

127.0.0.1:6379> hmset item:1001 name iphonex price 7000 id 1001 color black
OK
127.0.0.1:6379> hkeys item:1001
1) "name"
2) "price"
3) "id"
4) "color"

 

List類型:就像是Java的ArrayList

向左邊或者右邊添加元素:

127.0.0.1:6379> lpush list:1 1 2 3
(integer) 3
127.0.0.1:6379> rpush list:1 4 5 6 
(integer) 6

最終list:1是什麼呢?

1->2 1-> 3 2 1->3 2 1 4->3 2 1 4 5->3 2 1 4 5 6

 

根據開始索引和結束索引查看:

127.0.0.1:6379> lrange list:1 1 3
1) "2"
2) "1"
3) "4"

如果想全部讀取,設置為0到-1即可:

127.0.0.1:6379> lrange list:1 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
5) "5"
6) "6"

從列表的兩端彈出元素:

127.0.0.1:6379> lpop list:1
"3"
127.0.0.1:6379> rpop list:1
"6"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"
4) "5"

 列表長度:

127.0.0.1:6379> llen list:1
(integer) 4

刪除:-1:從右往左刪除第一個5;1:從左往右刪除第一個5;0:刪除所有的5

127.0.0.1:6379> lrem list:1 -1 5
(integer) 0
127.0.0.1:6379> lrem list:1 1 5
(integer) 0

獲取指定索引:

127.0.0.1:6379> lindex list:1 2
"4"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"

設置指定索引的值:

127.0.0.1:6379> lset list:1 2 100
OK
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "100"

 只保留列表某一部分元素:

127.0.0.1:6379> ltrim list:1 0 1
OK
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"

 插入:linsert [name] [after/before] [value] [new value]

127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "2"
4) "1"
127.0.0.1:6379> linsert list:1 before 2 100
(integer) 5
127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "100"
4) "2"
5) "1"

 

Set類型:

特點:不重覆,無序

增刪查:

127.0.0.1:6379> sadd set a b c d
(integer) 4
127.0.0.1:6379> sadd set a
(integer) 0
127.0.0.1:6379> srem set d
(integer) 1
127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"

差集運算:[1,2,3]和[2,3,4]的差集

127.0.0.1:6379> sadd set1 1 2 3 
(integer) 3
127.0.0.1:6379> sadd set2 2 3 4 
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "1"
127.0.0.1:6379> sdiff set2 set1
1) "4"

交集運算:[1,2,3]和[2,3,4]的交集

127.0.0.1:6379> sinter set1 set2
1) "2"
2) "3"

並集運算:[1,2,3]和[2,3,4]的並集

127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1,查找文件text中第三行的內容 命令: sed -n '3p' text 2,查找文件text中第二行到第四行的內容 命令: sed -n '2,4p' text ...
  • 在linux系統中,命令的使用要方便於圖形界面的使用,上一個博客介紹瞭如何使用PuTTy遠程登錄linux,當然,我使用的是本地登錄(手動滑稽) 經過一星期課餘時間的瞭解,大致瞭解了一些簡單的文件管理命令的使用,註意哈(無論什麼時候使用rm -rf ./* 的時候都要謹慎,啊,要不然就會有被打斷小狗 ...
  • centos7 啟動防火牆失敗:Failed to start firewalld.service: Unit is masked. 剛yum安裝了iptables 解決: 執行”systemctl start firewalld”啟動,出現”Failed to start firewalld.se ...
  • 1.把下載的安裝包解壓到opt目錄 2.啟動apache 和 mysql /opt/zbox/zbox start (發現apache的埠被占用,mysql啟動成功) 3.修改埠 /opt/zbox/zbox stop /opt/zbox/zbox -ap 8080 -mp 3307 (apac ...
  • 使用firewall 1、運行命令:firewall-cmd --get-active-zones運行完成之後,可以看到zone名稱,如下:2、執行如下命令命令:firewall-cmd --zone=public --add-port=81/tcp --permanent 3、重啟防火牆,運行命令 ...
  • 一、HDFS集群API所需要jar包的maven配置信息 二、從HDFS下載數據文件/上傳文件到HDFS文件系統 思路:1.獲取配置信息 2.設置配置信息(塊大小、副本數) 3.構造客戶端 4.下載數據文件/上傳數據文件 5.關閉資源 (1)下載文件 (2)上傳文件 三、對HDFS系統進行操作的AP ...
  • 一.資料庫mysql的特點 1.首先資料庫分為RDBMS(關係型資料庫),和NOSQL(非關係型資料庫),而我們的mysql則是RDBMS。 2.RDMS和NOSQL特點對比 RDBMS特點: (1)二維表的形式展示 (2)使用率非常大,例如傳統企業上使用的orcale,以及最新互聯網企業的mysq ...
  • 概述 lab2中實現了raft協議,本lab將在raft之上實現一個可容錯的k/v存儲服務,第一部分是實現一個不帶日誌壓縮的版本,第二部分是實現日誌壓縮。時間原因我只完成了第一部分。 設計思路 ![kvserver](https://blog 1253119293.cos.ap beijing.my ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...