Redis五大数据类型及操作
目录:
一、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五大数据类型及操作的更多相关文章
- Redis五大数据类型以及操作
目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字典) 五.redis的集合操作( ...
- redis 五大数据类型以及操作
一.redis的两种链接方式 1.简单连接 import redis conn = redis.Redis(host='10.0.0.200',port=6379) conn.set('k1','年后 ...
- Redis五大数据类型的常用操作
在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...
- redis 五大数据类型使用
redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex na ...
- Redis常用数据类型以及操作
Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...
- 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型
热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....; => keys product* 订单的 ...
- Redis五大数据类型详解
关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...
- redis五大数据类型以及常用操作命令
Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...
随机推荐
- STM32相关网址学习
http://www.stmcu.org/ stm32中文社区
- pip 使用技巧
指定豆瓣源安装 pip install configparser -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/si ...
- Java中static的使用
static 使用之静态变量: 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大 ...
- 【BZOJ】1687: [Usaco2005 Open]Navigating the City 城市交通(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1687 bfs后然后逆向找图即可.因为题目保证最短路唯一 #include <cstdio> ...
- 使用StringTokenizer分解字符串
Java切割字符串.一般使用substring.split.StringTokenizer来处理,前两种是String对象的方法,使用字符串能够直接处理,本文介绍下StringTokenizer的使用 ...
- LTP4J的使用BUG及解决方案
子墨子曾经曰过,LTP是个好模型! car老师oneplus还有bhan开发的LTP4J是个很好的项目,使用起来也非常方便,下面贴几个常见的错误使用引起的bug的log分析 1.现象描述:程序中断,生 ...
- Github基本操作的学习与温习
GitHub是最先进的分布式版本控制工具,下面是我学习中总结的操作流程,仅供参考 ----------------------------------------------------------- ...
- 关于spotlight for Windows和spotlight for oracle的使用
http://blog.csdn.net/luowangjun/article/details/4866084 http://konglx.iteye.com/blog/1873805
- ASP.NET实现推送文件到浏览器的方法
这篇文章主要介绍了ASP.NET实现推送文件到浏览器的方法,可实现将文件推送到浏览器供用户浏览或下载的功能,需要的朋友可以参考下 本文实例讲述了ASP.NET实现推送文件到浏览器的方法.分享给大家供大 ...
- 用ChemDraw画3D图的方法
在绘制化学图形的时候,很多的用户都会发现很多的图形都是三维的,这个时候就需要找一款能够绘制3D图形的化学绘图软件.ChemOffice 15.1是最新的化学绘图工具套件,总共有三个组件,其中ChemD ...