目录:

一、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)  #连接redisreturn 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','666')

二、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的有序集合操作

参考博客

转载于:https://www.cnblogs.com/llhtjwq/p/8547079.html

Redis五大数据类型以及操作---散列表相关推荐

  1. note.. redis五大数据类型

    redis 五大数据类型使用 nosql介绍,由来 什么是nosql 阿里巴巴的架构 nosql 四大分类 redis入门 概述 redis 安装 (docker) 基础的知识 redis五大数据类型 ...

  2. Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))

    Redis五大数据类型 一.String(字符串)数据类型 1.SET/GET/APPEND/STRLEN 2.INCR/DECR/INCRBY/DECRBY 3.GETSET 4. SETEX 5. ...

  3. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

    本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...

  4. Redis五大数据类型

    Redis五大数据类型 Redis数据类型 key + Østring Øset Ølist Øhash Øzset Redis五大数据类型 --Key Ø keys * • 查询当前库的所有键 Ø ...

  5. Redis五大数据类型常用命令

    Redis五大数据类型 Redis-Key 1.查看当前数据库的key keys * #返回当前数据库下的所有key 2.设置key set key value 3.获取key的value get k ...

  6. 【Redis五大数据类型】

    Redis五大数据类型 前言 一.字符串String 1. set / get / del / append / strlen 2. incr / decr / incrby / decrby 3. ...

  7. (一)Redis——五大数据类型及基础知识

    一位爱好技术的橘右京的哥哥橘左京 Redis--五大数据类型及基础知识(一) Redis 1.Redis命令 1.1 常用String命令 1.2 常用List命令 1.3 常用Hash命令 1.4 ...

  8. 【数据存储】【Redis】第三章: Redis五大数据类型实现原理

    Redis五大数据类型实现原理 对于五大数据类型(String,list,Hash,Set,Zset)实现原理,Redis在底层用到了多种数据结构,通过数据结构来实现键值对,将数据结构创建了一个对象r ...

  9. Redis(数据类型及操作指令、Java连接Redis)

    数据类型 1).五大数据类型 key+ ①string ②set ③list ④hash ⑤zset tips:只能存储字符串 2).String ①最基本类型 二进制安全意味着可以包含任何数据,如j ...

  10. redis学习-redis五大数据类型

    五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...

最新文章

  1. VC++图片框控件静态和动态加载位图
  2. 体感(Kinect)开发要点总结一
  3. BZOJ 1016 最小生成树计数
  4. python strip_Python3 strip()方法
  5. 华为麒麟1020鸿蒙系统,华为P50pro最新确认:麒麟1020+立体全面屏+鸿蒙系统,这才是华为...
  6. MoreResult 同事返回多个数据集
  7. 紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
  8. JAVA框架 Mybaits 输入和输出映射
  9. 【CentOS 7笔记43】,防火墙和iptables filter表#
  10. 机器学习之K-means算法
  11. 公司年会抽奖的一个java实现
  12. 央视《家有妙招》整理版,共250招,值得永远收藏
  13. 在Win10中安装Openfoam
  14. Java 使用JavaMail通过Gmail发送电子邮件
  15. 华为计算机黑屏怎么办,华为电脑开机屏幕没反应(开机黑屏的3个原因及解决法)...
  16. 自动化测试工程师面试简历参考
  17. CS224d: Deep Learning for NLP Lecture1 听课记录
  18. 文思海辉技术有限公司——流程管理架构平台应用
  19. unsorted bin attack
  20. ALV TREE DEMO

热门文章

  1. 博弈论:寻找先手必胜策略——Grundy值
  2. linux 单机跨进程通信
  3. vue使用echarts错误Failed to mount component: template or render function not defined.
  4. 带着身体在香港肤浅行走(一)
  5. 面向对象组合及三大特性
  6. Centos7.4 下cobbler安装及配置
  7. ROS Learning-008 beginner_Tutorials ROS话题
  8. CSS布局:让页脚始终保持底部的方法
  9. 使用Linq作为rdlc报表的数据源
  10. Linux下的.NET之旅:第一站,CentOS+Mono+Xsp构建最简单的ASP.NET服务器