标签:one cto start ted red float keyword 服务器 iter
1、key-value存储系统,key为字符串类型,只能通过key对value进行操作
2、支持的数据类型
String: 字符串
Hash: 散列
List: 列表
Set: 集合
Sorted Set: 有序集合
3、支持组从同步,数据从主服务器上向任意从服务器上同步
4、事务,允许一组命令在单一步骤下执行
5、原子性,都执行或都不执行
1、创建单个值set,多个值mset
import redis
r=redis.Redis (host=‘127.0.0.1‘,port=6379)
r.set(‘foo‘,‘Bar‘)
2、取单个值get,取多个值mget
print(r.mget(‘k3‘,‘k4‘)) # 根据key 取多个值
3、strlen.key #通过key取对应value值的长度
4、getrange(key, start, end) #切片获取指定的值
5、setrange(key,offset, value) # 修改值 指定索引offset修改成value
6、print(r.incr(‘nam‘,amount=4))
# 自增,key值存在在原有的值上加amount,key 值不存在创建key:amount
7、append(key, value) #追加
1、创建hset(name, key, value)
2、批量创建 hmest(name,{‘k1‘:‘v1‘, ‘k2‘: ‘v2‘})
3、hget 取单个; hmget 取多个值
4、hgetall(‘key‘) #获取key 对应的所有值
5、hlen(‘key‘) #获取key对应的hash中键值对的个数
6、hkeys(name) # name 对应的所有key的值
7、hvals(name) # 所有value值
8、hdel(name,*keys) 指定hash的中key,删除键值对
8、hincrby(name, key, amount=1)
#key 存在自增,不存在创建key:amount
注:hincrbyfloat 自增浮点数
9、hscan(name, cursor=0, match=None, count=None)
注:用于取大数据,迭代取值
参数:
# name,redis的name
# cursor,游标(基于游标分批取获取数据)
# match,匹配指定key,默认None 表示所有的key
# count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
例:
print(conn.hscan(‘k2‘,cursor=2,count=3))
print(conn.hscan_iter(‘k2‘))
for item in conn.hscan_iter(‘k2‘):
print(item)
1、添加 lpush(name,values)
# print(r.lpush(‘kk‘,‘ff‘,44,99))
2、lpushx(name,value)
# name 存在 从左边开始添加
3、llen(name) # 对应 list的个数
4、linsert(name, where, refvalue, value)) # 在某一个值的前或者后插入值
参数:
# name,redis的name
# where,BEFORE或AFTER(小写也可以)
# refvalue,标杆值,即:在它前后插入数据(如果存在多个标杆值,以找到的第一个为准)
# value,要插入的数据
5、lset(name, index, value) # 指定索引修改值
6、lrem(name, value, num) #在name对应的list中删除指定的值
参数:
# name,redis的name
# value,要删除的值
# num, num=0,删除列表中所有的指定值;
num=2,从前到后,删除2个;
num=-2,从后向前,删除2个
7、lpop(name) # #删除name对应的列表中左侧第一个元素
注: rpop 删除右侧第一个
8、lindex(name, index) # 根据索引取值
9、rpoplpush(src, dst) #将数据从一个列表添加到另一个列表
10、lrange(name, start, end) #分片获取数据
11、列表数据较大需要自定义增量迭代
def ll_sacn(name,count=2):
index=0
while True:
data_list=conn.lrange(name,index,index+count-1)
if not data_list:
return
index=index+count
for item in data_list:
yield item
for i in ll_sacn(‘ll‘):
print(i)
1、delete(*names) #删除任意数据类型
2、exists(name) #判断name是否存在
3、keys(pattern=‘*‘) # 根据模型匹配key值
4、expire(name ,time) #设置超时时间
5、rename(src, dst) # 重命名
6、scan(cursor=0, match=None, count=None)
scan_iter(match=None, count=None)
# 增量迭代获取key
7、move(name, db)) # name移动的指定的db下
import redis
#添加数据
r=redis.Redis (host=‘127.0.0.1‘,port=6379)
r.set(‘foo‘,‘Bar‘)
print(r.get(‘foo‘))
#连接池
pool =redis .ConnectionPool (host=‘127.0.0.1‘,port=6379)
r=redis.Redis (connection_pool= pool)
r.set(‘name‘,77)
print(r.get(‘name‘))
1、utils文件夹下,建立redis_pool.py
import redis
POOL = redis.ConnectionPool(host=‘127.0.0.1‘, port=6379,password=‘1234‘,max_connections=1000)
2、视图函数中
import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL
def index(request):
conn = redis.Redis(connection_pool=POOL)
conn.hset(‘kkk‘,‘age‘,18)
return HttpResponse(‘设置成功‘)
1、安装django-redis模块
2、在setting中配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "123",
}
}
}
3、视图函数中
from django_redis import get_redis_connection
conn = get_redis_connection(‘default‘)
print(conn.hgetall(‘xxx‘))
标签:one cto start ted red float keyword 服务器 iter
原文地址:https://www.cnblogs.com/quqinchao/p/9898385.html