python学习之-- redis模块操作 string
redis 模块操作之--> String
String:redis中的string在内存中按照一个key 对应一个 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) == set(name,value,nx=True)
setex(name,value,time) == set(name,value,ex=秒)
psetex(name,time_ms,value) == set(name,value,px=毫秒)
举例:
r.set('name','jack') # 初始值
# r.set('name','jack',ex=2) # 过期时间2秒
# r.set('name','jack',px=2) # 过期时间2毫秒
# time.sleep(3)
# r.set('name','JACK',nx=True) # 当name不存在则执行 --输出jack
# r.set('name','JACK',xx=True) # 当name存在则执行 --输出JACK
# print(r.get('name'))
mset(*args,**kwargs):批量设置值
举例:
r.mset(k1='v1',k2='v2')
print(r.mget('k1','k2'))
get(name):获取值
mget(keys,*args):批量获取。
mget('k1','k2')
getset(name,value):设置新值并获取原来的值
举例:
r.set('name','jack') # 初始值
print(r.getset('name','JACK')) # 打印初始值并设置新值
print(r.get('name')) # 打印新值
getrange(key,start,end):对key的值根据start,end进行切片
key:redis 键名
start:字串的起始位置(字节) end:字串的结束位置(字节)
举例:
r.set('name','jack') # 初始值
print(r.getrange('name',1,3))
setrange(name,offset,value):修改字符串内容,从指定字符串索引开始向后替换(新增太长时,则向后添加)
offset:字符串的索引,字节(一个汉字3个字节)
value:要设置的值
举例;
r.set('name','jack') # 初始值
r.setrange('name',1,'E')
print(r.get('name'))
setbit(name,offset,value):对name对应值的二进制表示的位进行操作
offset:位的索引(将值变换成二进制后再进行索引)
value:值只能是1或0
转换为二进制方法为:先转换为ascii编码,然后在转换为二进制码如下:
print(ord('a')) --》asc码
print(bin(97)) --》 二进制码
举例:
# 注:如果在Redis中有一个对应: n1 = "foo",
那么字符串foo的二进制表示为:01100110 01101111 01101111
所以,如果执行 setbit('n1', 7, 1),则就会将第7位设置为1,
那么最终二进制则变成 01100111 01101111 01101111,即:"goo"
getbit(name,offset):获取name对应的值的二进制表示中的某位的值
print(r.getbit('name',20)) #就是name值的二进制第20位是0还是1
bitcount(key,start=None,end=None):获取name对应的值的二进制表示中1的个数
start:可以指定起始位置,end:解释位置
print(r.bitcount('name')) # 打印二进制中1的个数
bitop(operation,dest,*keys):获取多个值,并将值做位运算,将最后的结果保存到新的name对应的值(用处少)
strlen(name):返回Name对应值的字节长度(一个汉字3个字节).
print(r.strlen('name'))
incr(name,amount=1):自增name对应的值(必须为数字),当name不存在时,则创建name=amount,否则,则自增
name: redis的name , amount:自增数(必须为整数)
r.set('age',10)
print(r.incr('age',amount=2))
incrbyfloat(name,amount=1.0):同上,浮点型自增。
decr(name,amount=1):自减name的值,当name不存在时,则创建name=amount,否则,则自减。使用同上
append(key,value):在redis name对应的值后面追加内容
key:redis的name
value:要追加的字符串
r.set('name','jack') # 初始值
r.append('name','is name') # 追加内容
print(r.get('name'))
输出:b'jackis name'
python学习之-- redis模块操作 string的更多相关文章
- python学习之-- redis模块操作 集合和有序集合
redis 模块操作之 集合set和有序集合zset Set 集合操作,不允许重复的列表sadd(name,value):name对应的集合中添加元素scard(name):获取name对应的集合中元 ...
- python学习之-- redis模块操作 LIST
redis 模块操作之 List List 操作,在内存中按照一个name对应一个List来存储. lpush(name,values):在name对应的list中添加元素,每个新的元素都添加到列表的 ...
- python学习之-- redis模块操作 HASH
redis 操作 之 -Hash Hash 操作:hash在内存中的存储格式 name hash n1 ------> k1 -> v1 k2 -> v2 k3 -> v3hs ...
- python学习之-- redis模块管道/订阅发布
redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型exists(name):检测redis的name是否存在keys(pattern='*'):根据模型获取redi ...
- python学习之-- redis模块基本介绍
数据缓存系统: 1:mongodb:是直接持久化,直接存储于硬盘的缓存系统 2:redis: 半持久化,存储于内存和硬盘 3:memcache:数据只能存储在内存里的缓存系统关于memcache 学习 ...
- Python学习 Part4:模块
Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...
- python学习之argparse模块
python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...
- Python学习day18-常用模块之NumPy
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day19-常用模块之re模块
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
随机推荐
- 应用-如何使不同的企业使用独自的数据源。使用ejb3.0+jboss6.2EAP+JPA
摘要: 如何使不同的企业使用独自的数据源.使用ejb3.0+jboss6.2EAP+JPA10C应用系统被多个企业同时使用,为了提供个性化服务,如何使不同的企业使用独自的 ...
- SAP CRM点了附件的超链接后报错的处理方式
SAP CRM系统里,点击了附件的这些超链接后,如果是文本文件,会在浏览器里打开.如果是其他类型的文件,会弹出下载对话框. 然而最近我工作时遇到一个问题,点击超链接后,总是弹出Logon failed ...
- Eclipse添加默认的JRE
打开eclipse,依次点击如下选项Window->Preferences-> Java -> Installed JREs.步骤见下图. 选中Installed JREs选项出 ...
- SQLite - SELECT查询
SQLite - SELECT查询 SQLite SELECT语句用于获取数据从一个SQLite数据库表返回数据结果表的形式.也称为result-sets这些结果表. 语法 SQLite SELECT ...
- [转] 学习,思维三部曲:WHAT、HOW、WHY(通过现象看本质)
https://www.douban.com/note/284947308/?type=like 学习技术的三部曲:WHAT HOW WHY 我把学习归类为三个步骤:What.How.Why.经过我对 ...
- MySQL存储过程实现分页及变量的定义
delimiter是MySQL中的命令,这个命令与存储过程没什么关系. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 即改变输入结束符. 默认情况下,delimit ...
- 【整理】解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function
解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function https://www.cnblogs.com/jaso ...
- c++ cpp和hpp
首先,我们可以将所有东西都放在一个.cpp文件内,编译器会将这个.cpp编译成.obj,即编译单元.一个程序可以由一个编译单元组成,也可以由多个编译单元组成.一个.cpp对应一个.obj,然后将所有的 ...
- JavaEE-06 Servlet基础
学习要点 Servlet生命周期 Servlet API的常用接口和类 Servlet的部署和配置 Servlet处理用户请求 Servlet JSP回顾 JSP技术开发web应用在服务器端生成网页的 ...
- JavaEE-01 JSP动态网页基础
学习要点 B/S架构的基本概念 Web项目的创建和运行 JSP页面元素 MyEclipse创建和运行Web项目 Web程序调试 Web简史 web前端技术演进三阶段 WEB 1.0:信息广播. WEB ...