Redis五大数据类型以及操做---散列表

 

目录:html

1、redis的两种连接方式redis

2、redis的字符串操做(string)django

3、redis的列表操做(list)app

4、redis的散列表操做(相似于字典里面嵌套字典)post

5、redis的集合操做(set)spa

6、redis的有序集合操做(zset)code

1、redis的两种连接方式htm

一、简单链接对象

import redis conn = redis.Redis(host='10.0.0.200',port=6379) conn.set('k1','年后') print(conn.get('k1'))

二、链接池blog

若是要链接redis的时候推荐用链接池的方式;若是每次操做都用同一个连接,能够用链接池连接

redis使用connection pool来管理对一个redis服务的全部链接,避免每次创建,释放链接的开销。默认 ,每一个redis实例都会维护一个本身的连接池。能够直接创建一个链接池,

而后做为参数redis,这样就能够实现多个redis实例共享一个链接池。

复制代码
#链接池
import redis pool = redis.ConnectionPool(host='10.0.0.200',port=6379) conn = redis.Redis(connection_pool=pool) conn.set('a','lalla') print(conn.get('a'))
复制代码

举例

pool.py

import redis POOL = redis.ConnectionPool(host='10.0.0.200',port=6379)

view.py

复制代码
from django.shortcuts import render,HttpResponse import redis from app01.pool import POOL # Create your views here.
def index(request): pool = redis.Redis(connection_pool=POOL)  #链接redis
    return HttpResponse('ok') def home(request): pool = redis.Redis(connection_pool=POOL) return HttpResponse('ok')
复制代码

三、Django-redis组件

安装:pip install django-redis

配置文件

复制代码
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://10.0.0.200:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", #"PASSWORD": "asdfasdf",
 } } }
复制代码

使用:

复制代码
#利用django-redis组件进行链接
from django.core.cache import caches import os import django_redis os.environ['DJANGO_SETTINGS_MODULE'] = 'redis之集合练习.settings' conn = django_redis.get_redis_connection() conn.set('b','666')
复制代码

2、redis的字符串操做(string)

String操做,redis中的String在在内存中按照一个name对应一个value来存储。

一、set(name, value, ex=None, px=None, nx=False, xx=False)  #设置值

在Redis中设置值,默认,不存在则建立,存在则修改 参数: ex,过时时间(秒) px,过时时间(毫秒) nx,若是设置为True,则只有name不存在时,当前set操做才执行 xx,若是设置为True,则只有name存在时,岗前set操做才执行

二、setnx(name, value)

设置值,只有name不存在时,执行设置操做(添加)  #至关于只是添加,不能进行修改操做

三、setex(name, value, time)

# 设置值 # 参数:
    # time,过时时间(数字秒 或 timedelta对象)

四、psetex(name, time_ms, value)

# 设置值 # 参数:
    # time_ms,过时时间(数字毫秒 或 timedelta对象)

五、mset(*args, **kwargs)

批量设置值 如: mset(k1='v1', k2='v2') 或 mset({'k1': 'v1', 'k2': 'v2'})

六、get(name)  获取值

七、mget(keys, *args)

批量获取 如: mget('ylr', 'zzz') 或 r.mget(['ylr', 'zzz'])

八、getset(name, value) 设置新值并获取原来的值

九、getrange(key, start, end)

# 获取子序列(根据字节获取,非字符) # 参数:
    # name,Redis 的 name
    # start,起始位置(字节)
    # end,结束位置(字节) # 如: "拉销量" ,0-3表示 "拉"

待续。。

3、redis的列表操做(list)

4、redis的散列表操做

Hash操做,也叫作散列表操做。redis中Hash在内存中的存储格式以下图:

一、hset(name, key, value)

复制代码
# name对应的hash中设置一个键值对(不存在,则建立;不然,修改)
 
# 参数:
    # name,redis的name
    # key,name对应的hash中的key
    # value,name对应的hash中的value
 
# 注:
    # hsetnx(name, key, value),当name对应的hash中不存在当前key时则建立(至关于添加)
复制代码

二、hmset(name, mapping)

复制代码
# 在name对应的hash中批量设置键值对
 
# 参数:
    # name,redis的name
    # mapping,字典,如:{'k1':'v1', 'k2': 'v2'}
 
# 如:
    # r.hmset('xx', {'k1':'v1', 'k2': 'v2'})
复制代码

三、hget(name,key)

# 在name对应的hash中获取根据key获取value

四、hmget(name, keys, *args)

复制代码
# 在name对应的hash中获取多个key的值
 
# 参数:
    # name,reids对应的name
    # keys,要获取key集合,如:['k1', 'k2', 'k3']
    # *args,要获取的key,如:k1,k2,k3
 
# 如:
    # r.mget('xx', ['k1', 'k2'])
    #
    # print r.hmget('xx', 'k1', 'k2')
复制代码

五、hgetall(name)  获取name对应的hash中的全部键值

六、hlen(name)  获取name对应的hash中键值对的个数

七、hkeys(name) 获取name对应的hash中全部的key的值

八、hvals(name) 获取name对应的hash中全部的value的值

九、hexists(name, key) 检查name对应的hash是否存在当前传入的key

十、hdel(name,*keys)  将name对应的hash中指定key的键值对删除

十一、hincrby(name, key, amount=1)   吧原来的值自加1

       hincrby ('xxx','slex',amount=-1) #吧原来的值自减1

# 自增name对应的hash中的指定key的值,不存在则建立key=amount # 参数:
    # name,redis中的name
    # key, hash对应的key
    # amount,自增数(整数)

十二、hincrbyfloat(name, key, amount=1.0) 支持浮点型的

1三、hscan(name, cursor=0, match=None, count=None)

复制代码
# 增量式迭代获取,对于数据大的数据很是有用,hscan能够实现分片的获取数据,并不是一次性将数据所有获取完,从而放置内存被撑爆
 
# 参数:
    # name,redis的name
    # cursor,游标(基于游标分批取获取数据)
    # match,匹配指定key,默认None 表示全部的key
    # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
 
# 如:
    # 第一次:cursor1, data1 = r.hscan('xx', cursor=0, match=None, count=None)
    # 第二次:cursor2, data1 = r.hscan('xx', cursor=cursor1, match=None, count=None)
    # ...
    # 直到返回值cursor的值为0时,表示数据已经经过分片获取完毕
复制代码

1四、hscan_iter(name, match=None, count=None)

复制代码
# 利用yield封装hscan建立生成器,实现分批去redis中获取数据
 
# 参数:
    # match,匹配指定key,默认None 表示全部的key
    # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
 
# 如:
    # for item in r.hscan_iter('xx'):
    # print item
  # for item in r.hscan_iter('xx',match='*lx'):  #匹配以lx结尾的
    #     print item
 
复制代码

5、redis的集合操做

6、redis的有序集合操做

 参考博客

相关文章
相关标签/搜索