python进阶12 Redis

一、概念

#redis是一种nosql(not only sql)数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便

#关系型数据库和非关系型数据库的区别
#关系型数据库:表和表之间存在的关系
#非关系型数据库:不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的;优点,速度快原因是将数据保存在内存中

  安装Redis

sudo apt-get update
sudo apt-get install redis-server

二、操作Redis

  1、启动Redis

redis-cli 

  2、Redis的数据类型

string #字符串
list #列表
hash #哈希:类似字典 key={"":"","":""},key->value,value值就是一个字典
set #集合
sorted sets #有序集合

三、操作string

  a、设置

set key value

set name which #设置一个which的名字,不能设置同一个,设置了会覆盖,默认设置的过期时间为永久

set name "which w" #如果名字有空格,需要用双引号括起来

  b、获取

get key

get name#获取时间

  c、设置过期时间

#分为两种情况:一种key已存在,另一种不存在
#已存在:
expire key seconds expire name 20 #对已经存在的name设置过期时间为20秒 #不存在:有两种可以选择
set key value ex seconds
setex key seconds value set name which ex 10 #给一个不存在的name,建并设置过期时间10秒

  d、查看过期时间

ttl key

ttl name  #查看name的过期时间 

#-1表示永不过期    -2表示已经过期   -其他正数表示剩余过期时间

  e、追加

#针对key的名字
append key value append name love #对name追加love,是向后添加,加在最后面,返回的是字符长度

  f、设置多个

mset key value key value ...

mset password 123 marry false #同时设置password为123,marry为false

  g、获取多个

mget key key key ...

mget name password marry #同时获取name,password,narry的值

  h、查看类型

type key 

type name #查看name 的类型,返回string

  i、删除key

del key

del name #删除name

  j、查看所有的key

keys * 

  k、查看key是否存在

exists key

exists name #查看name是否存在,不存在的话返回0,存在的话返回1

  l、运算

#运算只对整型有效

#自增1
incr key #自减1
decr key #任意加数字
incrby key increment #increment表示数字 #任意减数字
indrby key increment

四、List

  1、设置

lpush name value 

lpush l_list 1 2 3 4 5 #设置一个列表l_list 值为1 2 3 4 5 这是左添加,查询出来依次为5,4,3,2,1

rpush r_list 1 2 3 4 5 #射仪一个列表r_list 值为1 2 3 4 5 这是右添加,查询出来一次为1,2,3,4,5

  2、查询

lrange key start stop #start和结束表示索引

lrrange r_list 0 -1 #查看所有

  3、获取元素个数

llen key  

llen r_list #查看列表r_list的元素个数

  4、查看位于某索引的元素

index key 1

index r_list 1 #查看r_list索引1的元素

  5、删除

lpop key #删除左边第一个,返回被删除的值

rpop key #删除右边第一个,返回被删除的值

#指定删除
lrem key count value
#count>0 从左往右删数量为count个value
#count<0 从右往左删数量为count个value
#count=0 删除所有的value #count大于实际数量,删除所有

五、hash

  1、设置

hset key field value

hset user username  which #设置一个hash,key为user value中的其中一个键值对为“username”:“which”

  2、获取

hget key field

hget user username#获取user下面某个属性username的值

  3、设置多个

hmset key field value [field value] #[]表示可加可不加

  4、获取多个

hmget key field field #获取多个key下面field的值

  5、获取全部field value

hgetall key 

  6、获取所有的field

hkeys key

  7、获取所有的value

hvals key 

  8、获取field的个数

hlen key

  9、删除值

hdel key field

hdel user username #删除user下的username的值

六、set

  1、设置

sadd key value [value]

  2、获取

smembers key #获取一个集合key的值

  3、删除

#分为指定删除和随机删除
#指定删除
srem key member #指定删除集合key内的元素menber,若不存在元素返回0,删除成功返回1 #随机删除
spop key #随机删除集合key中的一个值

  4、移动一个集合的值到另一个集合

smove oldkey newkey member #将oldkey集合内的元素menber移动到newkey集合中,相当于剪切

  5、判断集合中是否存在某个元素

sismember key value #判断key中是否存在value 0表示假,1表示真

  6、把 key1 key2的交集合并到newkey

sinterstore newkey key1 key2

  7、把 key1 key2的并集合并到newkey

sunionstore newkey key1 key2

  8、把 key1 key2的差集合并到newkey

sdiffstore newkey key1 key2

  9、获取集合个数

scard key

  10、随机返回一个menber

srandmember key

七、操作zset(有序集合)

  1、设置

zadd key score member#设置一个有序集合key中第score个元素menber 

zadd tmp_zset 1 a 2 b  #设置一个有序集合tmp_zset第1个元素为a,第二个元素为b

  2、获取

#分为正序和倒序

#正序
zrange key start stop #倒序
zrevrange key start stop

  3、删除

zrem key member

  4、索引

#正序
zrank key member #倒序
zrevrank key member

  5、查看有序集合元素数

zcard key

  6、返回值在min 和 max之间的count

zcount key min max

  7、查看score值

zscore key member

  8、设置密码

#找到配置文件下的requirepass foobared 修改之后重启服务

七、Python操作Redis

  端口转发

#虚拟机设置---->网络 ---> 高级  ----> 端口转发-----> +号 ---->输入端口

#只针对端口模式,桥接不需要

  先安装一个第三方库redis

#虚拟环境:workon py3env
#安装包:pip install redis

  连接

cache = redis.Redis(host='',port='')

  python中操作

import redis

conn = redis.Redis(host= "127.0.0.1",port="")#创建连接

conn.set('name','qwe123') #常用操作都是以conn为前缀

print(conn.get('name').decode('utf8')) #不加后面decode('utf8')的话输出的是二进制代码,特别是输出的是中文尤其不便 ,所以需要后面的编码转义;输出以b开头的为二进制的意思

#add-->针对集合 sadd zadd
#get--->获取
#m... ---->设置多个 #特殊情况 #整减和整加 decr read_count 10
conn.decr('read_count',amount=10) #整减需要加上后面的关键字amount #设置多个字符串 mset p1 pp1 p2 pp2
conn.mset(p1='pp1',p2='pp2') #设置多个hash hmset key xx xxx xx xxx
conn.hmset('key',{"xx":"xxx"},{"xx":"xxx"})

python进阶12 Redis的更多相关文章

  1. python笔记-12 redis缓存

    一.redis引入 1.简要概括redis 1.1 redis默认端口:6379 1.2 redis实现的效果:资源共享 1.3 redis实现的基本原理:不同的进程和一个公共的进程之间建立socke ...

  2. Python进阶-操作redis

    1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'z ...

  3. python进阶学习笔记(一)

    python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...

  4. Python进阶 函数式编程和面向对象编程等

    函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...

  5. Python进阶之面向对象编程

    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  6. Python进阶之函数式编程

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  7. Python进阶量化交易场外篇5——标记A股市场涨跌周期

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

  8. Python进阶量化交易场外篇4——寻找最优化策略参数

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

  9. [Book Content]Python进阶

    python进阶 原书内容https://github.com/eastlakeside/interpy-zh 通过记录书本目录和大概内容做一个记录,方便以后回顾检索. Chapter Title B ...

随机推荐

  1. 五子棋AI的思路

    隔了一年才把AI思路给写了... 需求分析与设计方案:http://www.cnblogs.com/songdechiu/p/4951634.html 如需整个工程,移步http://download ...

  2. 存储过程之rowtype 使用

    CREATE OR REPLACE PROCEDURE "DYLYLQX_SC_BA_1" (YWID IN VARCHAR2, FLAG OUT VARCHAR2) IS V_R ...

  3. python-多线程2-线程同步

    线程同步: 一个场景: 一个列表里所有元素都是0,线程A从后向前把所有元素改成1,而线程B负责从前往后读取列表并打印. 那么,可能线程A开始改的时候,线程B便来打印列表了,输出就变成一半0一半1,这就 ...

  4. 华为机试题 N阶楼梯的走法,每次走一步或者两步

    在Stairs函数中实现该功能: 一个楼梯有N阶,从下往上走,一步可以走一阶,也可以走两阶,有多少种走法? (0<n<=30)<> 例如3阶楼梯有3种走法: 1.1.1 1.2 ...

  5. 【面试题046】求1+2+...+n

    [面试题046]求1+2+...+n 题目:     求1+2+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).   思 ...

  6. asteris录音设置

    [macro-recording] exten =>s,1,Set(CALLFILENAME=${STRFTIME(${EPOCH},UTC-8,%Y-%m-%d-%H-%M-%S)}-${CA ...

  7. N1游记

    考试一年前:要认真学文化课,所以还是别报七月的了吧,等到年底就该稳了. 考试半年前:虽然暑假没学,但是到了年底就该稳了. 考试一个月前:我咋还要考N1,算了不管了,到时候再说吧. 考试一周前:我一定要 ...

  8. ACM学习历程—HDU1717 小数化分数2(gcd)

    Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数 ...

  9. ACM学习历程—Hihocoder编程之美测试赛B题 大神与三位小伙伴(组合数学 )

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给你一个m x n (1 <= m, n <= 100)的矩阵A (0<=aij<=10000),要 ...

  10. ACM学习历程——POJ3295 Tautology(搜索,二叉树)

    Description WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some ...