程式設計序,用getchar函式讀人兩個字元給c1和c2,然後分別用putchar函式和printf函式輸出這兩個字元。思考以下問題:
阿新 • • 發佈:2020-08-03
redis介紹
Redis是一個高效能的key-value資料格式的記憶體快取,NoSQL資料庫
NoSQL:not only sql,泛指非關係型資料庫
關係型資料庫:(mysql,oracle,sql server,sqlite,db2)
1.資料存放在表中,表之間有關係
2.通用的SQL操作語言
3.大部分支援事務
非關係型資料庫:(redis,hadoop,mangoDB):
1.沒有資料表的概念,不同的nosql資料庫存放資料位置不同 2.nosql資料庫沒有通用的操作語言 3.基本不支援事務。 redis支援簡單事務
- redis
記憶體型(資料存放在記憶體中)的非關係型(nosql)key-value(鍵值對儲存)資料庫,
支援資料的持久化(注:資料持久化時將資料存放到檔案中,每次啟動redis之後會先
將檔案中資料載入到記憶體),經常用來做快取(用來快取一些經常用到的資料,提高讀寫速度)
redis是一款基於CS架構的資料庫,所以redis有客戶端,也有服務端
其中,客戶端可以使用python等語言,也可以終端命令列工具 - redis客戶端連線伺服器
redis-cli -h redis伺服器ip -p redis伺服器port
redis的配置
redis安裝成功以後,window下的配置檔案儲存在軟體安裝目錄下的redis.windows-service.conf檔案
如果是mac或linux,則預設安裝etc/redis/redis.conf
redis的核心配置選項
- 繫結ip:如果需要遠端訪問,可將此註釋,或繫結多個真實ip
bind 127.0.0.1 #最好bind 0.0.0.0
- 埠,預設為6379
port 6379
- 日誌檔案
logfile: redis/redis-server.log
- 設定密碼
redis資料型別
1.string型別 字串型別是redis中最為基礎的資料儲存型別,它在redis中是二進位制安全的,也就是byte型別 最大容量是512M。 key:string 2.hash型別 hash用於儲存物件,物件的結構為屬性、值,值的型別為string key:{ 域:值[這裡的值只能是字串]. 域:值, 域:值, ... } 3.list型別 列表的元素型別為string key:[值1,值2,值3...] 4.set型別 無序集合,元素為string型別,元素唯一不重複,沒有修改操作 key:{值1,值2,值3...} 5.zset型別 有序集合,元素為string型別,元素唯一不重複,有修改操作 key:{ 值:權重值, 值:權重值, }
string
如果設定的鍵不存在則為新增,如果設定的鍵已經存在則修改
- 設定鍵值
set key value
例:設定鍵為name值為xiaoming的資料
set name xiaoming
- 設定鍵值及過期時間,以秒為單位
setex key seconds value
例:設定鍵為aa值為aa過期時間為3秒的資料
setex name 20 xiaoming
- 關於設定儲存資料的有效期
setex新增儲存資料到redis,同時設定有效期
格式:
setex key time value
expire 給已有的資料重新設定有效期
格式:
expire key time
- 設定多個鍵值
mset key1 valie1 key2 value2...
例:設定鍵為a1值為python,鍵為a2值為java,鍵為a3值為c
mset a1 python a2 java
- 追加值
append key value
例:向鍵為a1中追加值haha
append a1 haha
- 獲取
get key 根據鍵獲取值,不存在此鍵則返回nil
例:獲取鍵name的值
get name
- 根據多個鍵獲取值
mget key1 key2...
例:獲取鍵a1,a2,a3的值
mget a1 a2 a3
- 查詢鍵,引數支援正則表示式
key pattern
例:檢視所有鍵
keys *
例:檢視名稱中包含a的鍵
keys a*
- 判斷鍵是否存在,如果存在返回1,不存在返回0
exists key1
例:判斷鍵a1是否存在
exists a1
- 檢視鍵對應的value的型別
type key
例:檢視鍵a1的值型別,為redis支援的五種型別中的一種
type a1
- 刪除鍵及對應的值
del key1 key2...
例: 刪除鍵a2,a3
del a2 a3
- 檢視有效時間,以秒為單位
ttl key
例:檢視鍵bb的有效時間
ttl bb
hash
- 結構
鍵key:{
域field:值value
}
- 設定單個屬性
hset key field value
例:設定鍵user的屬性name為xiaoming
hset user name xiaoming
- 設定多個值
hmset key field1 value1 field2 value2...
例:設定鍵u2的屬性name為xiaoming,屬性age為11
hmset u2 name xiaoming age 11
- 或者指定鍵所有的屬性
hkeys key
例:獲取鍵u2的所有屬性
hkeys u2
- 獲取一個屬性的值
hget key field
例:獲取鍵u2屬性name的值
hget u2 name
- 獲取多個屬性的值
hmget key field1 field2
獲取鍵u2屬性name、age的值
hmget u2 name age
- 獲取所有屬性的值
hvals key
例:獲取鍵u2所有屬性的值
hvals u2
- 刪除屬性,屬性對應的值也會被刪除
hdel key field1 field2
例:刪除鍵u2的屬性age
hdel u2 age
list
列表的元素型別為string,按照插入順序排序
- 在左側插入資料
lpush key value1 value2...
例:從鍵為a1的列表左側加入資料a,b,c
lpush a1 a b c
在客戶端中顯示的是c,b,a順序
- 在右側插入資料
rpush key value1 value2
例:從鍵為a1的列表右側加入資料0,1
rpush a1 0 1
在客戶端顯示的是0,1順序
- 在指定元素的前或後插入新元素
linsert key before或after 現有元素 新元素
例:在鍵為a1的列表中元素b前加3
linsert a1 before b 3
- 設定指定索引位置的元素值,索引從左開始,第一個元素為0,也可以為負數,-1表示最後一個
lset key index value
例:修改鍵為a1的列表中下標為1的元素值為z
lset a1 1 z
- 刪除指定元素
將列表中前count次出現的值為value的元素移除
count>0:從頭往尾移除
count<0:從尾往頭移除
count=0:移除所有
lrem key count value
例:從a2列表右側開始刪除2個b
lrem a2 -2 b
例:檢視列表a2的所有元素
lrange a2 0 -1
set
- 新增元素
sadd key member1 member2
例:向鍵a3的集合中新增元素zhangsan,lisi,wangwu
sadd a3 zhangsan lisi wangwu
- 返回所有的元素
smembers key
例:獲取鍵a3的集合中所有元素
smembers a3
- 刪除指定元素
srem key value
例:刪除鍵a3的集合中元素wangwu
srem a3 wangwu
針對redis中內容拓展
- 清空資料中所有資料
flushall
針對各種資料型別它們的特性,使用場景如下:
字串string: 用於儲存一些專案中的普通資料,只要鍵值對的都可以儲存,例如,儲存 session,定時記錄狀態
雜湊hash:用於儲存專案中的一些字典資料,但是不能儲存多維的字典,例如,商城的購物車
列表list:用於儲存專案中的列表資料,但是也不能儲存多維的列表,例如,佇列,秒殺,醫院的掛號
無序集合set:用於儲存專案中的一些不能重複的資料,可以用於過濾,例如,投票海選的時候,過濾候選人
有序集合zset:用於儲存專案中一些不能重複,但是需要進行排序的資料,分數排行榜.