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的更多相关文章

  1. python学习之-- redis模块操作 集合和有序集合

    redis 模块操作之 集合set和有序集合zset Set 集合操作,不允许重复的列表sadd(name,value):name对应的集合中添加元素scard(name):获取name对应的集合中元 ...

  2. python学习之-- redis模块操作 LIST

    redis 模块操作之 List List 操作,在内存中按照一个name对应一个List来存储. lpush(name,values):在name对应的list中添加元素,每个新的元素都添加到列表的 ...

  3. python学习之-- redis模块操作 HASH

    redis 操作 之 -Hash Hash 操作:hash在内存中的存储格式 name hash n1 ------> k1 -> v1 k2 -> v2 k3 -> v3hs ...

  4. python学习之-- redis模块管道/订阅发布

    redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型exists(name):检测redis的name是否存在keys(pattern='*'):根据模型获取redi ...

  5. python学习之-- redis模块基本介绍

    数据缓存系统: 1:mongodb:是直接持久化,直接存储于硬盘的缓存系统 2:redis: 半持久化,存储于内存和硬盘 3:memcache:数据只能存储在内存里的缓存系统关于memcache 学习 ...

  6. Python学习 Part4:模块

    Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...

  7. python学习之argparse模块

    python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...

  8. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  9. Python学习day19-常用模块之re模块

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

随机推荐

  1. Jenkins+Ant+Jmeter搭建轻量级接口自动化

    软件准备 本文所用软件版本如下: Jenkins2.176.1 Tomcat9.0.21 Ant1.9.14 Jmeter5.1.1 我已经把相应的软件上传到我的网盘中,下载地址如下: 下载链接:ht ...

  2. Android Gradle与Gradle插件的对应关系

    查看链接 https://blog.csdn.net/dazhong2012/article/details/80585834

  3. Junit测试集锦

    Junit测试集锦 前言: 一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻.所以在开发过程中,对于程序员来说,测试是非常重要的.言归正传,开始Ju ...

  4. SQL系列学习 基础数据

    //班主任表 CREATE TABLE [dbo].[teacher]( [id] [int] IDENTITY(1,1) NOT NULL primary key, [name] [varchar] ...

  5. 洛谷 P1918 保龄球

    题目描述 DL 算缘分算得很烦闷,所以常常到体育馆去打保龄球解闷.因为他保龄球已经打了几十年了,所以技术上不成问题,于是他就想玩点新花招. DL 的视力真的很不错,竟然能够数清楚在他前方十米左右每个位 ...

  6. 介绍三款大前端UI框架

    一.蚂蚁金服团队推出的基于React antd (全名:ant.design) 友情跳链:https://ant.design/index-cn:使用antd模板:https://pro.ant.de ...

  7. nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token

    nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token 注意: proxy_pass http://192.168.40.54:22 ...

  8. python基础一 day3 列表方法

    ls=['a','b','c','d','a','b','c','d']lst=['e','f','g','h']# 增加# ls.append('a') 将元素a添加至列表ls的尾部# ls.ext ...

  9. Android Studio集成crashlytics后无法编译的问题

    http://blog.csdn.net/zhuobattle/article/details/50555393 问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hos ...

  10. STL || Gym 101653U Top 25

    一组字符串给出两种排列方式, 求最小分成多少组 如 A     A B     C C    D D    B E    E 则分成3组 A B C D E 即为1 3 1 #include < ...