1. 程式人生 > >redis 基本命令,6種基本value型別

redis 基本命令,6種基本value型別

Redis是一種面向“鍵/值”對資料型別的記憶體資料庫,可以滿足我們對海量資料的讀寫需求。 redis的只能是字串 redis的支援多種資料型別:

  1:字串string

  2:雜湊hash

  3:字串列表list

  4:字串集合set 不重複,無序

  5:有序集合sortedset  ,不重複,有序

  6:HyperLogLog結構(redis2.8.9版本之後才有,用來做基數統計的演算法。)


redis 官網

www.redis.io

redis中文官網

www.redis.cn

下載redis安裝包,3.0才開始支援redis分散式

安裝redis,解壓後再redis目錄下執行:

1.make


2.make install  src目錄下會把一些可執行檔案copy到/usr/local/bin目錄下


啟動redis
redis-server


修改redis.conf

預設後臺 方式啟動redis

daemonize yes

日誌目錄

logfile "/usr/local/redis-3.0.0/logs"


啟動可以選擇配置檔案
redis-server /etc/redis.conf






ps -ef |grep redis


redis-cli客戶端

redis客戶端也可以設定,

連線哪臺機器哪個埠的redis,如果不設定ip和埠,預設啟動本機6379的redis
埠也可以在配置檔案裡改


redis-cli -h 127.0.0.0 -p 6379


停止redis
redis-cli  下執行 shutdown命令
redis-cli shutdown

redis有多個數據庫


預設進入0號資料庫
 
redis預設有16個數據庫(0-15)
進入15號資料庫
select 15


redis.conf可以配置資料庫個數
databases 16


redis資料庫名稱就是數字,不支援自定義資料庫名字




資料庫的操作是隔離的,一個命令除外:flushall

flushall清空redis所有資料庫例項中的資料




通用命令


獲取所有的key
redis-cli keys "*"


獲取以name開頭的所有key
redis-cli del `redis-cli keys "name*"`

獲取 crxy的型別
type crxy


判斷某個key是否存在
exists key


redis不區分大小寫





redis班助命令
help @String  所有String型別的操作幫助


help @Sorted_set

獲取set命令使用方法

help set




help s+Tab  自動補全s開頭的目錄





1.value為String型別


set是操作string資料型別的命令

設定一個值
set crxy www.crxy.cn

設定多個值
mset crxy1 aaa crxy2 bbbb


獲取1個值

get crxy

獲取多個值
mget crxy crxy2




如果建存在,則插入不成功,如果建不存在,則插入成功
setnx crxy 221222


值遞增加1,值必須可以轉換為數字
incr crxy


遞減,值必須可以轉換為數字
decr crxy


設定步長,每次遞增加3
incrby  crxy 3  


incrbyfloat crxy 2.1
incrbyfloat crxy -2.1


沒有decrbyfloat


拼接字串
append crxy aaa




返回長度


strlen crxy










2.hash(相對於hashmap)


key ->value(這個value是hashmap型別的資料,這個hashmap的key和value 都是字串)
value儲存的是hashmap的欄位,value的key和值都只能是字串


適用於儲存物件

比如user

user->{id:1,name:xiaoli,age:1}


動態增加刪除列
id  name   age gender




增加一個

user:100是key
hset user:100 name zs
hset user:100 age 18


獲取key為user:100的name屬性的值
hget user:100 name


增加多個
hmset user:100 name xiaolii gender 0


如果建存在則不操作,如果不存在則插入
hsetnx user:100 name wangsi


判斷建中是否存在某個屬性
hexists user:100 city
hmget user:100 age gender


刪除某個欄位
hdel user:100 city


獲取所有value
hvals user:100


獲取所有key
hkeys  user:100


長度
hlen user:100






3.value型別是list


從左邊插入
lpush list a 


lpush list  a b c d e f 
從右側插入
rpush list b


從左側彈出一個元素
lpost list 
 從右側彈出一個元素
rpost list




獲取長度
llen list




rlem list 2 a
lrem(lrem key count value)count分為三種情況
count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count 。
count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值。
count = 0 : 移除表中所有與 value 相等的值。






角標區間,-1倒數第一個,-2倒數第二個,(角標並不存在-1,-2,只是命令做了轉換)
lrange list 0 -1




元素:a b c d
角標  :0 1  2  3




修改0號角標的元素為a
lset list 0 a




4.value型別是Set
新增元素
sadd set a
sadd set b


刪除元素
srem set a b 


集合set中是否存在元素a
sismembers set a


集合中的所有元素
smembers set




返回差值,返回set中有而set1中沒有的元素
sdiff set set1


求連個set的交集
sinter set set1




並集,兩個元素中
sunion set set1


將set和set1的並集儲存在aaa中
sunionstore aaa set set1 


type aaa


smembers aaa


返回元素個數
scard aaaa


隨機取資料,取完就刪了
spop set




隨機取幾個元素(個數是正數,返回小於等於集合長度的元素,如果個數是負數,返回負數絕對值個的元素,不保證元素不重複)
srandmember set 2






5.value的型別是sortedSet


10是分值
zadd zset 10 a


獲取元素分值
zscore zset a




獲取某個區間元素


zrange zset 0 -1






zrange zset 0 1


反序返回所有元素
zrevrange zset 0 -1


通過分值獲取元素,預設是閉區間[10,20]
zrangebyscore zset 10 20


加小括號就是開區間 (10,20)
zrangebyscore zset (10 (20


遞增
zincrby zset a 1
返回元素個數
zcard zset


指分數定區間元素個數(閉區間)
zcount zset 10 20


zcount zset (10 20


移除指定元素
zrem zset a




通過角標刪除元素
zremrangebyrank zset 0 1


通過分數刪除元素
zremrangebyscore zset 10 20


開區間
zremrangebyscore zset (10  (20


正無窮
zadd zset +inf x


負無窮
zadd zset -inf y


如果兩個元素的分值相同,則按照元素的自然順序排序

例子:學生id和成績

key score:1  value:90


set score:1 90

set score:2 100

set score:3 80

set score:4 70

排序 

根據學生的成績排序:

*是萬用字元

sort list by score:*

4

3

1

2

根據成績排序 
sort list by score:* desc    降序排序

2

1

3

4

get # 表示獲取元素本身

sort list by score:* get #  get score:* desc

2

100

1

90

3

80

4

70

sort list 對hashset排序

hset stu:1 id 1

hset stu:1 name name1

hset stu:1 score 60

hset stu:2 id 2

hset stu:2 name name2

hset stu:2 score 50

hset stu:3 id 3

hset stu:3 name name3

hset stu:3 score 80

hset stu:4 id 4

hset stu:4 name name4


sort list by stu.*->score 4 2 1 3 因為stu:4沒有score這個參考鍵,預設是0
同時查詢出姓名 sort list by stu:*->score get #  get stu:*->name

如果分數相同,則按照id排序,stu:1 表示id為1的學生

set命令許可權很大,set本來是String型別的操作命令,如果操作其他型別的資料,其他資料都會轉換為String型別




Jedis程式設計




新增Jedis的maven依賴


測試


Jedis jedis = new Jedis(host, port);


生產

private static JedisPool jedisPool=null;


public Jedis getJedis(){

if(JedisPool==null){

JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(100);//總連線數
poolConfig.setMaxIdle(10);//空閒連結數
poolConfig.setMaxWaitMillis(3000);//建立連線的超時時間
poolConfig.setTestOnBorrow(true);//在建立連線的時候是否會測試,保證建立的連線一定是可用的
JedisPool jedisPool = new JedisPool(poolConfig, host, port);

}|

Jedis jedis = jedisPool.getResource();
return jedis;

}


public void returnJedis(Jedis jedis){

jedisPool.returnResourceObject(jedis);

}

@Test

public void test1(){

Jedis jedis=getJedis();

String string = jedis.get("crxy");
System.out.println(string);

}








redis每個操作都是原子操作,保證執行緒安全

事務:

redis中的事務是一組命令的集合。事務同命令一樣都是redis的最小執行單元。一組事務中的命令要麼都執行,要麼都不執行。(例如:轉賬) 原理:先將屬於一個事務的命令傳送給redis進行快取,最後再讓redis依次執行這些命令。 應用場景 一組命令必須同時都執行,或者都不執行。 我們想要保證一組命令在執行的過程之中不被其它命令插入。 命令 multi  事務開始 ..... exec  事務結束,開始執行事務中的命令 discard  放棄事務 錯誤處理 1:語法錯誤:致命的錯誤,事務中的所有命令都不會執行 2:執行錯誤:不會影響事務中其他命令的執行 Redis 不支援回滾(roll back) 正因為redis不支援回滾功能,才使得redis在事務上可以保持簡潔和快速。 java程式碼手工實現incr遞增命令 watch命令 作用:監控一個或者多個鍵,當被監控的鍵值被修改後阻止之後的一個事務的執行。 但是不能保證其它客戶端不修改這一鍵值,所以我們需要在事務執行失敗後重新執行事務中的命令。 注意:執行完事務的exec命令之後,watch就會取消對所有鍵值的監控 unwatch:取消監控

相關推薦

redis 基本命令,6基本value型別

Redis是一種面向“鍵/值”對資料型別的記憶體資料庫,可以滿足我們對海量資料的讀寫需求。 redis的鍵只能是字串 redis的值支援多種資料型別:   1:字串string   2:雜湊hash   3:字串列表list   4:字串集合set 不重複,無序  

redis基本命令和五大基本資料型別

Redis的基本命令 關閉redis伺服器 1、直接殺死程序(不推薦)可能不會資料持久化 Kill-9 程序號 2、使用客戶端 執行 shutdown命令 會資料持久化(推薦) ./redis-cli shutdown Redis有預設的16個數

JavaScript的6基本資料型別

                           資料型別 資料型別指的就是字面量型別 在JS中一共有六種資料型別

redis中的五基本的數據結構

ash multiple 一次 浮點 mem username member index AC 1 String 基本的數據類型。 2 list 2.1 將元素放入一個list中 rpush mylist A rpush mylist B rpush mylist A 如果

redis基礎命令之key基本操作命令

redis是key-value儲存的,放在記憶體中,並在磁碟持久化的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。通過set key value來儲存,通過get key來獲取值一.建立key----set/setnx/mset/msetnx1.建立單個keyset

6基本排序(C++實現)

六種基本排序...包括氣泡排序,直接插入排序,直接選擇排序,希爾排序,歸併排序,快速排序.第七種堆排序目前理解的不是很好,未完成. 執行時間方便比較排序時間效率,N可以改變陣列元素個數方便測試,隨機數用來生成隨機陣列. C++實現如下: // arraySort.cpp :

2017-7-18-每日博客-關於Linux基本命令CnetOS7系統基本操作命令.doc

空間使用 正在 run 個數 linux oot disable 輸出 column 1.root/下 cat anaconda-ks.cfg 確定是否裝base軟件組 yum groupinstall base 安裝base組ifconfig 命令就可以使用了或者

Redis常用命令總結(五大資料型別常用命令

目錄 1.key關鍵字: Keys *:檢視當前k-v鍵值對快取中的所有key Exists key的名字,判斷某個key是否存在 Move key db  -->當前庫就沒有了,被移除了 Expire key秒鐘:為給ke

Python 3.x中的6標準物件型別之——Number(數值)資料型別

整型(int) 通常被稱為整型或整數,包含正負,不含小數點,同時沒有大小限制。 (如1,2,3,-6,5555等) 支援正常的數學運算,但在整數的除法(/)中,計算結果不會為整數 print(153/51) >>> 3.0 若想在整數的除法中

資料結構(十一)迴圈佇列的基本操作----6基本操作

//順序佇列存在一個問題 ---假溢位現象,為了解決這個問題,提出了迴圈佇列 //迴圈佇列中存在隊空和隊滿條件一樣的情況,因此提出了犧牲一個空間的方法 //迴圈佇列的基本操作 #include &

資料庫【mongodb篇】基本命令學習筆記 MongoDB基本命令用 MongoDB基本命令

MongoDB基本命令用 MongoDB基本命令用   成功啟動MongoDB後,再開啟一個命令列視窗輸入mongo,就可以進行資料庫的一些操作。 輸入help可以看到基本操作命令: show dbs

Redis常用命令(5)SortKey型別

一、相關命令列表說明: 命令原型 時間複雜度 命令描述 返回值 *ZADD key score member [score] [member]* 新增引數中指定的所有成員及其分數到指定key的Sorted-Set中,在該命令

Redis常用命令(3)Hash型別

一、相關命令列表說明: 命令原型 時間複雜度 命令描述 返回值 HSET key field value 為指定的Key設定Field/Value對,如果Key不存在,該命令將建立新Key以引數中的Field/Value對,

Redis常用命令(1)String型別

一、相關命令列表說明: 命令原型 時間複雜度 命令描述 返回值 ————————String型別—————– APPEND key value 如果該Key已經存在,APPEND命令將

REDIS基本資料型別命令操作(1)

REDIS 五種基本資料型別命令操作 1. 字串(string) set key value #儲存一個鍵值對 get key #通過key來去對應的值 mset key1 v1 k2 v2 #一次儲存多

REDIS基本資料型別命令操作(2)

REDIS 五種基本資料型別命令操作 1.set集合 sadd key v1 [v2 v3] # 新增值到set集合中 smembers key # 迭代遍歷set集合 sismember key value # 判斷是否存在一個

跟我一起學Redis之五基本型別及其應用場景舉例(幹了6個小時)

**前言** 來啦,老弟?來啦,上一篇就當嘮嘮嗑,接下來就開始進行實操擼命令,計劃是先整體單純說說Redis的各種用法和應用,最後再結合程式碼歸納總結。 Redis預設有16個數據庫(編號為0~15),預設使用第0個,通過命令select任意切換資料庫,和MySql切換資料庫一個道理;各資料庫之間的資

Redis資料型別基本命令

1、Redis 的五大基本型別 String(字串) Hash(雜湊) List(列表) Set (集合) Zset (有序集合) 2、 Redis 鍵(key) keys * 查詢所有資料庫中的鍵 exists key的名字,判斷某個key是否存在 mo

redis學習二,redis的五基本資料型別

Hash型別是String型別的filed和value的對映表,或者說是一個String的結合,他特別適合儲存物件。相比較而言把一個物件儲存在Hash型別中要比直接儲存在String中更加節省空間。並方便儲存整個物件,Hash型別也是我們工作中最常用的一種。

redis的五基本型別

Hash型別是String型別的filed和value的對映表,或者說是一個String的結合,他特別適合儲存物件。相比較而言把一個物件儲存在Hash型別中要比直接儲存在String中更加節省空間。並方便儲存整個物件,Hash型別也是我們工作中最常用的一種。