09-MySQL reids

redis 基本操做

1. 什麼是Redisredis

Redis是由意大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存數據庫。Redis全稱爲:Remote Dictionary Server,該軟件使用C語言編寫,Redis是一個key-value存儲系統,它支持豐富的數據類型,如:string、list、set、zset(sorted set)、hash。

Redis特色:
Redis之內存做爲數據存儲介質,因此讀寫數據的效率極高,遠遠超過數據庫。

Redis應用場景:
由於Redis交換數據快,因此在服務器中經常使用來存儲一些須要頻繁調取的數據,這樣能夠大大節省系統直接讀取磁盤來得到數據的I/O開銷,更重要的是能夠極大提高速度。
將這種熱點數據存到Redis(內存)中,要用的時候,直接從內存取,極大的提升了速度和節約了服務器的開銷。

進入redis數據庫

redis-cli 
#不能進入,就安裝:
sudo apt-get update
sudo apt-get install redis-server

redis五種數據類型、及操做

  • string 字符串緩存

  • list 列表服務器

  • hash 哈希app

  • set 集合ui

  • sorted sets 有序集合spa

key 有5中數據類型:string、list、set、zset(sorted set)、hash。

value :都是字符串類型的

string

#設置
set key value     例:   ( set name 'jianeng' )
#  獲取
get key           例:   ( get name   )
# key是惟一的,不能用同一個key 否則就會覆蓋
 

查看過時時間code

# -1 表示永久     -2 表示 不存在
ttl key      例:   ( ttl name )
 

設置過時時間server

# 給已經存在 key,設置過時時間
expire key seconds   例:  ( expire name 20  )
# 設置 key的同時,設置過時時間
set key value ex seconds   例: ( set age 18 ex 20 )
setex key seconds value    例: ( setex sex 20 '男' )
 

追加索引

# 給已有的value,再添加新的值
# append key value
append name  love
#get name
redis 裏面全部的 value。 都是字符串類型的
 

設置 / 獲取 多個

 
#設置多個 string
mset key value  key value..
例子
mset username 'jianeng'  password  '123'
#獲取多個
mget key key key ...
mget username password name 
 

key 操做

# 查看全部的key
 keys *
 keys n*
# 刪除
 del key     例: (del name)
 
# 查看key是否存在  ,存在返回 1, 不存在返回 0
 exists key 
# 查看key類型
 type key
 
運算
set num 1   # 自動識別,字符串裏面的 整數
# +1
incr key        例 (incr num)
# -1
decr key        例 (decr num)
# +整數
incrby key increment              例 (incrby num 50)
# -整數
decrby key increment              例 (decrby num 50)
 

list

  • 設置

    #lpush  左添加  (棧)
    lpush  key  value     #例  lpush my_list a b c d
    #rpush  右添加   (隊列)
    rpush  key  value     #例  rpush my_rlist a b c d
     
  • 查看

    # lrange  key  start  stop
    例  查看全部
    lrange my_list 0 -1
     
  • 得到list的元素個數

     
    llen key        #例  llen  my_list  
     
  • 查看位於lindex 位置上的元素

    lindex key  index    #例 lindex my_list  3
     
  • 刪除

    • lpop 刪除左邊第一個

      lpop key        #例 lpop  my_rlist
       
  • rpop 刪除右邊第一個

     
    rpop key        #例 rpop  my_list
     
  • lrem 刪除指定

    rpush  test_list  a a b b c d e a d f m c
    #lrem  key count  value
    #count > 0 從左往右 刪除數量爲count的value
    例 : lrem test_list 2 a
    #count = 0 刪除全部的 value
    例 : lrem test_list 0 a
    #count < 0 從右往左 刪除數量爲count的value
    例 : lrem test_list -1 b
     

hash

  • 設置

    #  hset key field value
    例  user { name:jianeng}
    hset user name jianeng
     
  • 獲取

    #  hget key field
    hget user name
     
  • 刪除

    #  hdel key field
    hdel user name
     
  • 設置多個

    #hmset key field value [field value]
    例  user{name:jianeng , age:18, sex:male }
    hmset user name jianeng age 18 sex male
     
  • 獲取多個

    # hmget key field field
    hmget user name age
  • 獲取所有field value

    # hgetall key 
    例     itmes
    hgetall user
  • 獲取全部的field

    # hkeys key
    例      keys
    hkeys user
  • 獲取全部的value

    # hvals key 
    例     values  
    hvals user
  • 獲取field的個數

    # hlen key
    例    
    hlen user
     

set 集合

  • 設置

    # sadd key value [value]    (惟一,無序)
    sadd my_set m n b v c x z b
     
  • 獲取

    # smembers key
    smembers my_set
     
  • 刪除

    • srem指定刪除

      # srem key member
      srem my_set c
       
    • spop隨機刪除

      # spop  key
      spop my_set
       
  • 移動一個集合的值到另外一個集合

    # smove oldkey newkey member
    smove my_set my_set2 z
     
  • 判斷集合存在某個值

    # sismember key value
    sismember my_set2 b   
     
  • 交集

    # sinter key1 key2 ..
    sinter my_set my_set2
     

    把 key1 key2的交集合併到newkey

    # sinterstore newkey key1 key2
    sinterstore  new_set my_set my_set2 
  • 並集

    # sunion key1 key2 ...
    sunion my_set my_set2
     

    把 key1 key2的並集合併到newkey

    # sunionstore newkey key1 key2
    sunionstore new_set2 my_set my_set2
     
  • 差集

     
    # sdiff key1 key2
    sdiff my_set my_set2
     

    把 key1 key2的差集合併到newkey

    # sdiffstore newkey key1 key2
    sdiffstore new_set3 my_set my_set2
     
  • 獲取集合個數

    # scard key
    scard my_set
     
  • 隨機返回一個

    # srandmember key
    srandmember my_set
     

zset

  • 設置

    # zadd key score member
    zadd  my_zset 1 'one'
    zadd  my_zset 2 'two'
    zadd  my_zset 3 'three'
    zadd  my_zset 4 'four'
    zadd  my_zset 5 'five'
     
  • 獲取

    • zrange

       
      #zrange key start stop    (withscores)
      zrange my_zset 0 -1 withscores
       
    • zrevrange倒序

      #zrevrange key start stop
      zrevrange my_zset 0 -1 withscores
  • 刪除

    #zrem key member
    zrem my_zset two
     
  • 索引

    • zrank正序

      # zrank key member
      zrank my_zset three
       
    • zrevrank反序

       
      # zrevrank key member
      zrevrank my_zset three 
  • zcard 查看有序集合元素數

    # zcard key
    zcard my_zset
     
  • zrangebyscore 返回集合中 score 在給定區間的元素

    # zrange my_zset 0 -1 withscores
     zrangebyscore my_zset 2 3 withscores
    #返回了 score 在 2~3 區間的元素
  • zcount 返回集合中 score 在給定區間的數量

    # zcount key min max
    zcount my_zset 2 3
     
  • zscore : 查看score值

     
    # zscore key member
    zscore my_zset two
  • zremrangebyrank : 刪除集合中排名在給定區間的元素(正向)

    # zrange my_zset 0 -1 withscores
    zremrangebyrank my_zset 1 3
     
  • zremrangebyscore : 刪除集合中 score 在給定區間的元素

    # zrange my_zset 0 -1 withscores
    zremrangebyscore my_zset 3 5
     

Redis發佈和訂閱

#發佈 
publish 頻道 消息


# 訂閱
subscribe 頻道
相關文章
相關標籤/搜索