1. 程式人生 > 實用技巧 >程式設計序,用getchar函式讀人兩個字元給c1和c2,然後分別用putchar函式和printf函式輸出這兩個字元。思考以下問題:

程式設計序,用getchar函式讀人兩個字元給c1和c2,然後分別用putchar函式和printf函式輸出這兩個字元。思考以下問題:

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:用於儲存專案中一些不能重複,但是需要進行排序的資料,分數排行榜.