Redis操作指令

redis

1.redis庫的操作

獲取值:
1.獲取基本值: get key,例如,get name
2.獲取多個值: mget key1 key2 …,例如,mset name age
查看鍵:
1.查看所有的鍵: keys *,例如,keys *
2.查看以a開頭的鍵: keys a*,例如,keys a*,keys a*, keys a
3.看鍵是否存在: exists key,例如,exists name
4.查看鍵的類型: type key1,例如,type name
刪除鍵值對:
1.刪除鍵: del key1 key2 …,例如,del name age
2.設置鍵有效期,刪除鍵:expire key seconds,例如,expire name 10 # 10秒後,name消失
3.查看鍵的有效期: ttl key,例如,ttl name
4.flushall,清空,例如,flushall
字符串類型:
字符串類型
1. 基本鍵值對: set key value 後面還可以直接跟有效期(秒),例如,set age 10 ex 6
2. 鍵值對,有效期: setex key second value,例如,setex name 10 zs # 10秒後,該name消失
3. 設置多個鍵值對: mset key1 value1 key2 value2 …,例如,mset name zs age 18
4. 追加值: append key value
append name haha # 在原來name上的值上追加haha,即"zs" + “haha” = ‘zshaha’
set類型
set類型
特點:無序(順序)集合, 大小關係有序,不能存儲重複元素
添加元素
1.向key域(集合)中添加多個數據, sadd key member1 member2…
sadd num_set 1 4 6 7 4 5
獲取元素
2.獲取key域集合的所有元素: smembers key
smembers num_set
刪除元素
1.刪除指定key元素的值: srem key value
srem num_set 1
hash類型
hash類型
增加數據
1.增加域的key和值: hset key field value
hset person name zs
2.設置域的多個屬性: hmset key filed1 value1 field2 value2…
hmset person name zs age 18
獲取數據
1.獲取域的屬性(字段): hget key field
hget person name
2.獲取域的多個屬性: hmget key filed1 field2…
hmget person name age
3.獲取域的所有屬性(字段): hkeys key
hkeys person # 顯示的是,name age
刪除數據
1.刪除多個屬性值(字段): hdel key field1 field2…
hdel person name age
Zset類型
Zset類型
特點: 有序集合, score爲權重值
序:自然順序
增加數據
1.向key域集合中添加多個score1,member1數據
格式: zadd key score1 member1 score2 memever2…
zadd nums 10 zs 20 lisi
獲取數據
1.返回指定範圍內的member元素:
格式:zrange key start stop
start:爲開始索引,包含
stop:爲結尾索引,包含, -1表示最後一個元素
zrange nums 0 -1
2.獲取min和max權值之間(包含)的成員值:
格式:zrangebyscore key min max
zrangebyscore nums 0 230
3.獲取key域集合中member的score的權重值:
格式:zscore key member
zscore nums zs
刪除元素
1.刪除域集合中指定的元素值:
格式:zrem key member1 member2…
zrem nums zs lisi
2.刪除集合中權重在指定範圍內(min,max)的元素:
格式:zremrangebyscore key min max
zremrangebyscore nums 0 20
list類型
list類型
插入數據
1.左側插入數據: lpush key value1 value2 …
lpush num_list 1 2 3 # 左邊插入數據
2.右側插入數據: rpush key value1 value2 …
rpush num_list 1 2 3 # 右邊插入數據
3.指定key,舊元素位置前插入元素:
格式:linsert key before oldvalue newvalue
linsert num_list before 1 10
4.指定key,舊元素位置後插入元素:
格式:linsert key after oldvalue newvalue
linsert num_list after 1 10
獲取數據
1.獲取從編號start位置到編號stop位置的元素:
格式:lrange key start stop
(注意點,最後一個元素可以使用-1表示)
lrange num_list 0 -1
2.設置指定索引位置的元素值: lset key index value
lset num_list 0 6 # 索引值爲0的數改爲6
刪除數據
1.將key域列表中,前count次,值爲value的元素刪除:
格式: lrem key count value
count:需要刪除的個數
value: 需要刪除的值
count>0:從頭開始數, count<0從尾到頭,count=0查找所有元素
lrem num_list 2 a # 從左到右刪除兩個a
lrem num_list -2 a # 從右到左刪除兩個a
lrem num_list 0 a # 把全部的a刪除

2. redis的存取

redis的優點:從redis中存取數據,效率要比mysql數據庫要快的多

redis裏面存取的數據類型:

# 注意:從redis裏取出的數據都爲bytes類型,需要對其進行編譯decode()
# string: 字符串  
	'history_<user_id>': <value>	
	history_1: '1,2,3'
	history_2: 

# hash: 哈希 value: 屬性:值    key: <field>: <value>
	history: {
        history_<user_id>: <value>,
	}

# list: 列表  key:[<value1>,<value2>]
	'history_<user_id>': [1, 2, 3]
	
# set: 無序集合  key:(<value1>,<value2>)
	排除

# zset: 有序集合
	有序集合中的每個元素都有一個權重

3.redis操作命令(python)

import redis
# 使用decode_responses指定爲True,得到字符串類型,不然會得到一個二進制類型
redis_store = redis.StrictRedis(host='127.0.0.1',port=6379,decode_responses=True)
redis_store.set('name','heima')  # redis_store.set(key,value),都是字符串
name = redis_store.get('name')
# 注意:從redis裏取出的值都爲bytes類型

hash命令: 格式: key : { }

1)hincrby(key, field, value)

# 給hash中field屬性值累加一個value,如果field不存在,新建一個屬性和值,例如
# 如果用戶的購物車記錄中已經添加過該商品,數量需要進行累加
# 如果用戶的購物車記錄中沒有添加過該商品,設置一個新的屬性和值
# hincrby(key, field, value): 給hash中field屬性值累加一個value,如果field不存在,新建一個屬性和值
redis_conn.hincrby(cart_key, sku_id, count)  # sku_id商品的id,count商品的數量

2)hgetall(key)

# 返回hash中所有屬性和值
cart_redis = redis_conn.hgetall(cart_key)  # dict

3)hset(key, field, value)

 # hset(key, field, value): 將hash中指定屬性field的值設置爲value
 pl.hset(cart_key, sku_id, count)

4)hdel(key, *fields)

# hdel(key, *fields): 刪除hash中對應的屬性和值,有則刪除,無則忽略
pl.hdel(cart_key, sku_id)

5)hkeys(key)

 # hkeys(key): 返回hash中所有屬性
 # [b'<sku_id>', b'<sku_id>', ...]
 sku_ids = redis_conn.hkeys(cart_key)  # list

set命令:

1)sadd(key, *members)

# 向set中添加元素,不需要關注是否重複,set中元素唯一
# sadd(key, *values): 向set中添加元素,不需要關注是否重複,set中元素唯一
redis-conn.sadd(cart_selected_key, sku_id)  # sku_id商品的id

2)smembers(key)

# 獲取set中所有元素
 sku_ids = redis_conn.smembers(cart_selected_key)

3)srem(key, *members)

# srem(key, *members): 從set中移除元素,如果元素不存在,直接忽略
pl.srem(cart_selected_key, sku_id)

list命令:

1)lrange(key, start, end )

# lrange(key, start, end): 獲取redis列表指定區間內的元素
# [b'<sku_id>', b'<sku_id>', ...]
sku_ids = redis_conn.lrange(history_key, 0, 4)

4.兩個Redis指令參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章