Rides 复习

546 阅读4分钟

注:redis的命令对大小写不敏感,所以命令关键词可以大写哦。

redis是key-value的数据,所以每个数据都是一个键值对。

键的类型是字符串

值的类型有

字符串        string
哈希          hash
列表          list
集合          set
有序集合      zset

设置键值

set key value

设置键值及过期时间,以秒为单位

setex key seconds value

设置多个键值

mset key value key value [key value ...]

对值操作

获取值

get key
# 不存在返回None

获取多个键的值

mget key [key ...]

运算(值是数字) 将key的value加1

incr key

将key的value减1

decr key

将key的value加整数

incrby key increment

将key的value减整数

decrby key decrement

追加值

#如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
append key value

获取值长度

strlen key

对键操作

查找键,参数支持正则

keys pattern

实例

# 查找所有键
keys *  
# 查找以str开头的所有键
keys str*

判断键是否存在

exists key [key ...]
#存在返回1 不存在返回0

查看键对应的值的类型

type key

删除键及对应值

del key [key ...]

设置过期时间,以秒为单位

#键值对创建时没有设置过期时间则一直存在,直到该键被删除
#对已有键设置过期时间
expire key seconds
#设置成功返回1

查看键的有效时间,以秒为单位

ttl key

哈希 hash

hash 用于存储对象,对象的格式为键值对

设置单个属性

hset key field value
#实例
hset person1 name 'xiaohong'
hset person1 age 20
hset person1 gender 0

设置多个属性

hmset key field value [field value ...]
#例子
hmset person2 name 'xiaoming' age 18 gender 1

获取一个属性的值

hget key field

获取多个属性的值

hmget key field [field ...]

获取所有属性和值

hgetall key

获取所有属性 field

hkeys key

获取所有值 value

hvals key

返回包含属性的个数

hlen key

判断属性是否存在

hexists key field

删除属性及值

hdel key field [field ...]

返回值的字符串长度

hstrlen key field 
# 可能用不了

列表 list

列表的元素类型为string

按照插入顺序排序

在列表的头部或者尾部添加元素

在头部插入数据

lpush key value [value ...]
#实例
lpush arr1 1
lpush arr1 2
lpush arr1 3
#arr1的数据为 [3,2,1]

在尾部插入数据

rpush key value [value ...]
#实例
rpush arr1 4 5 6 7
#arr1 的数据为 [3,2,1,4,5,6,7]

在一个元素的前|后插入新元素

linsert key before|after pivot value
#实例
# 在值1前面插入8
linsert arr1  before 1 8
#arr1 的数据为 [3,2,8,1,4,5,6,7]

设置指定索引的元素值

lset key index value
#索引值是基于0的下标
#实例 实现值的替换
lset arr1 1 9
#arr1 的数据为 [3,9,8,1,4,5,6,7]

移除并返回key对应的list的第一个元素

lpop key
#实例
lpop arr1
'3'
#arr1 的数据为 [9,8,1,4,5,6,7]

移除并返回key对应的list的最后一个元素

rpop key

返回存储在key的列表中指定范围内的元素

lrange key start stop

裁剪列表,改为原集合的一个子集

ltrim key start stop
ltrim arr1 1 -1
lrange arr1 0 -1
#arr1 的数据为 [8,1,4,5,6,7]

返回存储在key里的list的长度

llen key

返回列表中索引对应的元素

lindex key index

无序集合 set

无序集合,元素类型为string类型

元素具有唯一性,不重复

添加元素

sadd key member [member ...]

返回key集合所有的元素

smembers key

返回集合元素个数

scard key

求多个集合的交集

sinter key [key ...]

求集合与集合之间的差集

sdiff key [key ...]

求多个集合的合集

sunion key [key ...]

判断元素是否在集合中

sismeber key member

有序集合 zset

有序集合,元素类型为string类型

元素具有唯一性,不重复。

每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序(元素的score可以相同) 添加

zadd key score member [score member ...]
zadd zz1 3 good 1 nice 4 handsome 2 cool 4 beautiful

返回指定范围内的元素

zrange key start stop
zrange zz1 0 4
"nice"
"cool"
"good"
"beautiful"
"handsome"

返回元素个数

zcard key

返回有序集key中,score值在min和max之间的成员个数

zcount key min max

返回有序集key中,成员member的score值

zscore key member

删除有序集的成员

zrem key member [member ...]

Python与Redis的交互

import redis

# 普通连接
conn = redis.Redis(host="ip", port=6379,password="123456")
#conn.set("x1","hello",ex=5) # ex代表seconds,px代表ms
#val = conn.get("x1")
#print(val)
pipe = conn.pipeline()  #写到缓冲区
pipe.set("p1","abcd")
pipe.set("p2","efgh")
pipe.execute()          #提交