1.1redis相关操作
基于key、value的内存性nosql数据库。读写效率极高,一般用来临时缓存数据,支持数据的持久化
redis默认端口是6379
redis默认有16个数据库,0-15
select x 可以切换数据库,默认进入的是零号库,x只能为0-15
(1)启动服务端
切换到redis目录,在终端中输入redis-server即可启动redis服务端
(2)启动客户端
切换到用户工作目录,在终端中输入redis-cli即可启动redis客户端
1.2数据操作
1.2.1string
(1)string是redis最基本的类型;最大能存储512MB数据;string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等
(2)命令
- 设置键值
①设置键值:set key value
②设置键值及过期时间,以秒为单位:setex key seconds value
③设置多个键值:mset key1 value1 key2 value2...
- 获取
①根据键获取值,如果不存在此键则返回nil:get key
②根据多个键获取多个值:mget key1 key2...
- 运算
要求:值是数字
①将key对应的value加1:incr key
②将key对应的value加整数:incrby key increment
③将key对应的value减1:decr key
④将key对应的value减整数:decrby key decrement
- 追加值:append key value
- 获取值长度:strlen key
- 键的命令
①查找键,参数支持正则:keys pattern
②判断键是否存在,如果存在返回1,不存在返回0:exists key1 key2...
③查看键对应的value的类型:type key
④删除键及对应的值:del key1 key2...
⑤设置过期时间,以秒为单位,如果在创建时没有设置过期时间,则一直存在,知道使用del移除:expire key seconds
⑥查看有效时间,以秒为单位:ttl key
1.2.2hash
(1)hash用于存储对象,对象的格式为键值对
(2)命令
- 设置(filed代表属性)
①设置单个属性:hset key field value
②设置多个属性:hmset key field1 value1 field2 value2...
- 获取
①获取一个属性的值:hget key field
②获取多个属性的值:hmget key field1 field2...
③获取所有属性的值:hgetall key
④获取所有的属性:hkeys key
⑤返回包含属性的个数:hlen key
⑥获取所有值:hvals key
- 判断属性是否存在:hexists key field
- 删除属性及值:hdel key field1 field2...
- 返回值的字符串长度:hstrlen key field
1.2.3list
(1)列表的元素类型为string;按照插入顺序排序;在列表的头部或者尾部添加元素
(2)命令
- 设置
①在头部插入数据:lpush key vlaue1 value2...
②在尾部插入数据:rpush key value1 value2...
③在指定元素的前/后插入新元素:linsert key before|after pivot value
注意:pivot;如:linsert py4 after "123" "hello"表示在123的后面插入hello
④设置指定索引的元素值:lset key index value
注意:索引是从0开始的,索引可以是负数,负数表示从list尾部开始计数
- 获取
①移除并且返回 key 对应的 list 的第一个元素:lpop key
②移除并返回存于 key 的 list 的最后一个元素:rpop key
③返回存储在 key 的列表里指定范围内的元素:lrange key start stop
注意:start 和 end 偏移量都是基于0的下标,偏移量也可以是负数,表示偏移量是从list尾部开始计数
- 裁剪列表,改为原集合的一个子集:ltrim key start stop
- 返回存储在 key 里的list的长度:llen key
- 返回列表里索引对应的元素:lindex key index
1.2.4set
(1)无序集合;元素为string类型;元素具有唯一性,不重复
(2)命令
- 设置
添加元素:sadd key member1 member2...
- 获取
①返回key集合所有的元素:smembers key
②返回集合元素个数:scard key
- 集合的操作
①求多个集合的交集:sinter key1 key2...
②求某集合与其它集合的差集:sdiff key1 key2...
③求多个集合的合集:sunion key1 key1...
④判断元素是否在集合中:sismember key member
1.2.5zset
(1)sorted set,有序集合;元素为string类型;元素具有唯一性,不重复;每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序;元素的score可以相同
(2)命令
- 设置
添加:zadd key score1 member1 socre2 member2...
- 获取
①返回指定范围内的元素:zrange key start stop
②返回元素个数:zcard key
③返回有序集key中,score值在min和max之间的成员:zcount key min max
④返回有序集key中,成员member的score值:zcore key member
1.3与python交互
1.3.1导入模块和连接
(1)导入模块
import redis
(2)连接
r=redis.StrictRedis(host='localhost',port=6379)
1.3.2操作
(1)写
pipe = r.pipeline()
pipe.set('name', 'world') pipe.get('name') pipe.execute()
(2)读
temp = r.get("py10")
print(temp)
(3)封装
将string类型的读写进行封装
import redis
class RedisHelper():
def __init__(self,host='localhost',port=6379):
self.__redis = redis.StrictRedis(host, port)
def get(self,key):
if self.__redis.exists(key):
return self.__redis.get(key)
else:
return ""
def set(self,key,value):
self.__redis.set(key,value)