redis 基本命令,6種基本value型別
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.make2.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型別也是我們工作中最常用的一種。