# Redis Overview ## Redis 是什麼 ? Redis (Remote Dictionary Server) 是一個 open-source 的 in-memory 的資料儲存系統,分類上屬於 NoSQL。資料儲存在記憶體中所以速度可以很快,根據需求也可以支援寫入硬碟。不過最常用的功能是作為 cache。 ## 建立一個 cloud Redis database - 到[此網站](https://redis.com/try-free?utm_source=redisio&utm_medium=referral&utm_campaign=2023-09-try_free&utm_content=cu-redis_cloud_users&_ga=2.175050914.1856843813.1707386440-963761342.1707386440&_gl=1*1bd47hm*_ga*OTYzNzYxMzQyLjE3MDczODY0NDA.*_ga_8BKGRQKRPV*MTcwNzM4NjQzOS4xLjEuMTcwNzM4NzE0My41Ni4wLjA.*_gcl_au*MjAwMjA4OTkwNy4xNzA3Mzg2NDQw)去建立 free account - 選一個 cloud provider 後就會自動幫你建立 Redis database 了 ## 基本操作 (Python) - 下載 Python 套件 ``` pip install redis ``` - 連線到 cloud Redis server - 先到[剛剛的連結](https://redis.com/try-free?utm_source=redisio&utm_medium=referral&utm_campaign=2023-09-try_free&utm_content=cu-redis_cloud_users&_ga=2.175050914.1856843813.1707386440-963761342.1707386440&_gl=1*1bd47hm*_ga*OTYzNzYxMzQyLjE3MDczODY0NDA.*_ga_8BKGRQKRPV*MTcwNzM4NjQzOS4xLjEuMTcwNzM4NzE0My41Ni4wLjA.*_gcl_au*MjAwMjA4OTkwNy4xNzA3Mzg2NDQw)點到你的 database 中的 Public Endpoint > Connect > 選擇 Python 後複製 code 連結 - Python 連線 (password 這邊可以到 database 的 Security 欄位中使用預設的) ![image](https://hackmd.io/_uploads/HkBigwvoa.png) ```python import redis r = redis.Redis(host='***', port=***, password='*******', decode_responses=True) ``` 這邊加 `decode_responses` 可以讓之後查找時回傳已經 decode 的值 - [Python API](https://redis-py.readthedocs.io/en/stable/commands.html) - CRUD Create: `set`, Read: `get`, Update: `set`, Delete: `delete` ```python # create, read, and update >>> r.set('name', 'bob') True >>> r.get('name') 'bob' >>> r.set('name', 'alice') True >>> r.get('name') 'alice' >>> r.keys() ['name'] # delete >>> r.delete('name') 1 # 回傳刪除幾個 key >>> r.keys() [] ``` - `hset`, `hget`, `hdel`, ... 針對 hash 值的 key/value 做操作,以下例子可以把 `hash1` 當作一個 table ```python >>> r.hset("hash1", "key1", "value1") 1 >>> r.hset("hash1", "key2", "value2") 1 >>> r.hkeys("hash1") ['key1', 'key2'] >>> r.hdel("hash1", "key1") 1 >>> r.hkeys("hash1") ['key2'] ```