目录:

一、redis的两种链接方式

二、redis的字符串操作(string)

三、redis的列表操作(list)

四、redis的散列表操作(类似于字典里面嵌套字典)

五、redis的集合操作(set)

六、redis的有序集合操作(zset)

一、redis的两种链接方式

1、简单连接

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

2、连接池

如果要连接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')

3、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','')

二、redis的字符串操作(string)

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

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

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

2、setnx(name, value)

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

3、setex(name, value, time)

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

4、psetex(name, time_ms, value)

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

5、mset(*args, **kwargs)

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

mset({'k1': 'v1', 'k2': 'v2'})

6、get(name)  获取值

7、mget(keys, *args)

批量获取
如:
mget('ylr', 'zzz')

r.mget(['ylr', 'zzz'])

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

9、getrange(key, start, end)

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

待续。。

三、redis的列表操作(list)

四、redis的散列表操作

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

1、hset(name, key, value)

# name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

# 参数:
# name,redis的name
# key,name对应的hash中的key
# value,name对应的hash中的value # 注:
# hsetnx(name, key, value),当name对应的hash中不存在当前key时则创建(相当于添加)

2、hmset(name, mapping)

# 在name对应的hash中批量设置键值对

# 参数:
# name,redis的name
# mapping,字典,如:{'k1':'v1', 'k2': 'v2'} # 如:
# r.hmset('xx', {'k1':'v1', 'k2': 'v2'})

3、hget(name,key)

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

4、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')

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的键值对删除

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

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

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

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

13、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时,表示数据已经通过分片获取完毕

14、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

五、redis的集合操作

六、redis的有序集合操作

参考博客

Redis五大数据类型及操作的更多相关文章

  1. Redis五大数据类型以及操作

    目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字典) 五.redis的集合操作( ...

  2. redis 五大数据类型以及操作

    一.redis的两种链接方式 1.简单连接 import redis conn = redis.Redis(host='10.0.0.200',port=6379) conn.set('k1','年后 ...

  3. Redis五大数据类型的常用操作

    在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...

  4. 一文搞定Redis五大数据类型及应用场景

    本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...

  5. redis 五大数据类型使用

    redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex na ...

  6. Redis常用数据类型以及操作

    Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...

  7. 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型

    热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....;  => keys product* 订单的 ...

  8. Redis五大数据类型详解

    关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...

  9. redis五大数据类型以及常用操作命令

    Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...

随机推荐

  1. linux镜像空间

    硬件采用nandflash,nandflash为8位数据宽度,没有dataflash和norflash. Nandflash空间分配为 bootstrap + u-boot + env + linux ...

  2. 关于MongoDB最大连接数的查看与修改

    一. MongoDB连接数 在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道,估计也没有人在 WIN平台下使用MongoDB做生产环境 [root@ ...

  3. C语言 函数指针三(反向调用)

    动态库代码 //简单的动态库开发----报文发送 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib. ...

  4. 第二百三十八节,Bootstrap输入框和导航组件

    Bootstrap输入框和导航组件 学习要点: 1.输入框组件 2.导航组件 3.导航条组件 本节课我们主要学习一下Bootstrap的两个个组件功能:输入框组件和导航导航条组件. 一.输入框组件 文 ...

  5. (转)memcache缓存

    转自:http://369369.blog.51cto.com/319630/833234/ memcache分布式缓存 Memcache知识点梳理 Memcached概念:    Memcached ...

  6. poj 2386:Lake Counting(简单DFS深搜)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18201   Accepted: 9192 De ...

  7. 房间WIFI信号不好怎么办?——无线路由桥接(WDS)

    背景 1.无线路由在客厅,房间的WIFI信号很差,只有1-2格,虽说是100M的网速,但是从客厅到房间要经过3道墙!电脑的无线接收功能一般都很一般,网速不好理所当然. 2.弄一根网线从客厅连接起来很傻 ...

  8. 国内Android源码下载

    因国内网络被墙的原因,按照Google提供下载Android源码的方式很难下载到,所以记录一下国内下载Android源码的步骤,主要利用的是清华大学的镜像下载. 说明: 下载环境:Ubuntu14.0 ...

  9. 面试题思考:IOC的优缺点

    先讲重点  面试时怎么答: 先把IOC的概念说出来 依赖注入和控制反转 所谓的依赖注入是甲方开放接口,在它需要的时候,能够将乙方传递进来(注入):所谓的控制反转,甲乙双方不相互依赖,交易活动的进行不依 ...

  10. python 的时间复杂度

    Python内置方法的时间复杂度 本文翻译自Python Wiki 本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了Python中若干方法的时间复杂度(或者叫“大欧”,“Big O”).该时 ...