一、字符串操作
redis中的string在内存中都是按照一个key对应一个value来存储的。
1)set(name, value, ex=None, px=None, nx=False, xx=False)
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name, value)
xx,如果设置为True,则只有name存在时,当前set操作才执行'''
2)get(name) # 获取值
3)mset() # 批量设置值
4)mget(keys, *args) # 批量获取值
5)append(name, value) # 追加
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.
set
(
"time"
,
"20171124"
)
print
(r.get(
"time"
))
r.mset(year
=
"2017"
,month
=
"11"
,date
=
"24"
)
print
(r.mget(
"year"
,
"month"
,
"date"
))
r.append(
"date"
,
"10:13"
)
print
(r.get(
"date"
))
|
运行结果:
20171124
['2017', '11', '24']
2410:13
二、list操作
redis中的List在内存中按照一个name对应一个List来存储
1)lpush(name,values)
在name对应的list中添加元素,每个新的元素都添加到列表的最左边
r.lpush("list_name",2)
r.lpush("list_name",3,4,5) # 保存在列表中的顺序为5,4,3,2
2)rpush(name,values)
同lpush,但每个新的元素都添加到列表的最右边
3)lpushx(name,value)
在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
4)rpushx(name,value)
在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边
5)llen(name)
name对应的list元素的个数
print(r.llen("list_name"))
6)linsert(name,where,refvalue,value)
在name对应的列表的某一个值前后插入一个新值
参数:
name,redis的name
where,BEFORE或AFTER
refvalue,标杆值,即:在它前后插入数据
value,要插入的数据
7)lset(name,index,value)
对name对应的list中的某一个索引位置重新赋值
参数:
name,redis的name
index,list的索引位置
value,要设置的值
8)lrem(name,value,num)
在name对应的list中删除指定的值
参数:
name,redis的name
value,要删除的值
num, num=0,删除列表中所有的指定值;
num=2,从前到后,删除2个;
num=-2,从后向前,删除2个
9)lpop(name)
在name对应的列表的左侧获取第一个元素并在列表中移除,返回值删除那个元素的值
10)rpop(name)
表示从右向左操作
11)lindex(name,index)
在name对应的列表中根据索引取列表元素
12)lrange(name,start,end)
在name对应的列表分片获取数据
例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.lpush(
"list1"
,
1
)
# 往列表最左边,添加元素
r.lpush(
"list1"
,
"a"
,
"b"
,
"c"
)
print
(r.lrange(
"list1"
,
0
,
3
))
# 从左至右,打印下标0-3对应的元素
r.rpush(
"list2"
,
1
)
# 往列表最右边,添加元素
r.rpush(
"list2"
,
"a"
,
"b"
,
"c"
)
print
(r.lrange(
"list2"
,
0
,
3
))
print
(r.llen(
"list1"
))
# 打印列表中元素的个数
|
运行结果:
['c', 'b', 'a', '1']
['1', 'a', 'b', 'c']
4
例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.lpush(
"list111"
,
1
)
r.lpush(
"list111"
,
"a"
,
"b"
,
"c"
)
print
(r.lrange(
"list111"
,
0
,
3
))
r.linsert(
"list1111"
,
"AFTER"
,
"a"
,
"f"
)
# 列表a元素后面插入f
print
(r.lrange(
"list1111"
,
0
,
-
1
))
# 打印列表全部元素
r.lset(
"list1111"
,
3
,
"g"
)
# 索引位置3重新设置新值
print
(r.lrange(
"list1111"
,
0
,
-
1
))
r.lrem(
"list1111"
,
"g"
,
0
)
# 删除列表中,指定的值(以及附件N个值)
print
(r.lrange(
"list1111"
,
0
,
-
1
))
r.lpop(
"list1111"
)
# 删除最左边一个值
print
(r.lrange(
"list1111"
,
0
,
-
1
))
print
(r.lindex(
"list1111"
,
1
))
# 打印索引位置为1的值
|
运行结果:
['c', 'b', 'a', '1']
['b', 'a', 'f', '1']
['b', 'a', 'f', 'g']
['b', 'a', 'f']
['a', 'f']
f
三、set类型操作
set集合,即不重复的列表
1)sadd(name,values)
给name对应的集合中添加元素
r.sadd("set_name","aa")
r.sadd("set_name","aa","bb")
2)smembers(name)
获取name对应的集合的所有成员
3)scard("set_name")
获取name对应的集合中的元素个数
sinter(keys, *args)
4)sinter("set_name1","set_name2")
获取多个name对应集合的交集
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")
print(r.sinter("set_name","set_name1","set_name2"))
5)sunion(keys, *args)
获取多个name对应的集合的并集
r.sunion("set_name","set_name1","set_name2")
6)sismember(name, value)
检查value是否是name对应的集合内的元素
7)spop(name)
从集合的右侧移除一个元素,并将其返回
8)srem(name, value)
删除集合中的某个元素
r.srem("set_name", "aa")
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.sadd(
"set_name"
,
"a"
,
"b"
,
"c"
)
# 添加集合
print
(r.smembers(
"set_name"
))
# 打印集合
print
(r.scard(
"set_name"
))
# 打印集合长度
r.srem(
"set_name"
,
"a"
)
# 删除集合中的元素
print
(r.smembers(
"set_name"
))
r.sadd(
"set_name1"
,
"c"
,
"d"
,
"e"
)
print
(r.sinter(
"set_name"
,
"set_name1"
))
# 打印集合的交集
print
(r.sunion(
"set_name"
,
"set_name1"
))
# 打印集合的并集
print
(r.sismember(
"set_name1"
,
"d"
))
# 判断集合中是否存在元素
print
(r.spop(
"set_name1"
))
# 删除集合中最右边的一个元素
print
(r.smembers(
"set_name1"
))
|
运行结果:
set(['a', 'c', 'b'])
3
set(['c', 'b'])
set(['c'])
set(['c', 'b', 'e', 'd'])
True
e
set(['c', 'd'])
四、Hash类型操作
Redis在内存中存储hash类型是以name对应一个字典形式存储的
1)hset(name,key,value)
name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
参数:
name:redis的name
key:key1对应的hash中的key
value:value1对应的hash中的value
注:hsetx(name,key,value),当name对应的hash中不存在当前key则创建(相当于添加)
2)hget(name,key)
在name对应的hash中获取根据key获取value
3)hmset(name,mapping)
在name对应的hash中批量设置键值对
参数:
name:redis的name
mapping:字典,如{'k1':'v1','k2','v2'}
4)hmget(name,keys,*args)
在name对应的hash中获取多个key的值
参数:
name:redis对应的name
keys:要获取key的集合,如:['k1','k2','k3']
*args:要获取的key,如:k1,k2,k3
5)hgetall(name)
获取name对应hash的所有键值
6)hlen(name)
获取name对应的hash中键值的个数
7)hkeys(name)
获取name对应的hash中所有的key的值
8)hvals(name)
获取name对应的hash中所有的value的值
9)hexists(name,key)
检查name对应的hash是否存在当前传入的key
10)hdel(name,*keys)
将name对应的hash中指定key的键值对删除
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.hset(
"dict1"
,
"name"
,
"zhao"
)
# 添加字典一对值
print
(r.hget(
"dict1"
,
"name"
))
# 打印字典值
r.hmset(
"dict1"
,{
"age"
:
27
,
"sex"
:
"man"
})
# 添加一个字典多对值
print
(r.hmget(
"dict1"
,
"age"
,
"sex"
))
# 打印一个字典多对值
print
(r.hgetall(
"dict1"
))
# 打印一个字典全部值
print
(r.hlen(
"dict1"
))
# 字典长度
print
(r.hkeys(
"dict1"
))
# 字典所有key
print
(r.hvals(
"dict1"
))
# 字典所有value
print
(r.hexists(
"dict1"
,
"age"
))
# 判断字典key是否存在
r.hdel(
"dict1"
,
"age"
)
# 删除字典某个key
print
(r.hgetall(
"dict1"
))
|
运行结果:
zhao
['27', 'man']
{'age': '27', 'name': 'zhao', 'sex': 'man'}
3
['name', 'sex', 'age']
['zhao', 'man', '27']
True
{'name': 'zhao', 'sex': 'man'}
五、其他常用操作
1)delete(*names)
根据name删除redis中的任意数据类型
2)exists(name)
检测redis的name是否存在
3)keys(pattern='*')
根据* ?等通配符匹配获取redis的name
4)expire(name ,time)
为某个name设置超时时间
5)rename(src, dst)
重命名
6)move(name, db))
移动key至指定的库下
7)type(name)
获取name对应值的类型
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import
redis
redis_config
=
{
"host"
:
"192.168.2.230"
,
"port"
:
6379
,
"db"
:
0
}
r
=
redis.Redis(
*
*
redis_config)
r.
set
(
"name"
,
"hello"
)
r.delete(
"name1"
)
# 删除key
print
(r.keys())
print
(r.
type
(
"name"
))
# 打印key类型
r.rename(
"name"
,
"name1"
)
# 重命名key
print
(r.exists(
"name"
))
# 判断key是否存在
r.move(
"dict1"
,
1
)
# 移动key至其他库
|