set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:      ex,过期时间(秒)      px,过期时间(毫秒)      nx[not exist],如果设置为True,则只有name不存在时,当前set操作才执行      xx,如果设置为True,则只有name存在时,当前set操作才执行

--------------------------------------------------------------------------------------------------------------------------------------

setnx(name, value)           --> 不存在则设置
设置值,只有name不存在时,执行设置操作(添加)
--------------------------------------------------------------------------------------------------------------------------------------
setex(name, value, time)       --> 存在则设置
# 设置值
# 参数:
# time,过期时间(数字秒 或 timedelta对象)
--------------------------------------------------------------------------------------------------------------------------------------
mset(*args, **kwargs)   --> 批量设置key-value

--------------------------------------------------------------------------------------------------------------------------------------

mget(keys, *args)   --> 批量获取value

--------------------------------------------------------------------------------------------------------------------------------------

getset(name, value)  --> 设置新值并获取原来的值

--------------------------------------------------------------------------------------------------------------------------------------

getrange(key, start, end)  --> 获取子序列(根据字节获取,非字符)
参数:     # key,Redis 的 key     # start,起始位置(字节)
# end,结束位置(字节)

--------------------------------------------------------------------------------------------------------------------------------------

setrange(name, offset, value)
# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
# 参数:     # offset,字符串的索引,字节(一个汉字三个字节)     # value,要设置的值

--------------------------------------------------------------------------------------------------------------------------------------

keys *     --> 获取全部的keys

--------------------------------------------------------------------------------------------------------------------------------------

setbit(name, offset, value)  --> 对name对应值的二进制表示的位进行操作
# 参数:     # name,redis的key     # offset,位的索引(将值变换成二进制后再进行索引)
# value,值只能是 1 或 0 [因为二进制只有0和1]

--------------------------------------------------------------------------------------------------------------------------------------

# 扩展,转换二进制表示:# source = "哈哈哈"source = "foo" for i in source:num = ord(i)print bin(num).replace('b','') 特别的,如果source是汉字 "哈哈哈"怎么办?答:对于utf-8,每一个汉字占 3 个字节,那么 "哈哈哈" 则有 9个字节对于汉字,for循环时候会按照 字节 迭代,那么在迭代时,将每一个字节转换 十进制数,然后再将十进制数转换成二进制
11100110 10101101 10100110 11100110 10110010 10011011 11101001 10111101 10010000
getbit(name, offset)  --> name对应值的二进制
# 参数:     # name,redis的key     # offset,位的索引(将值变换成二进制后再进行索引)

--------------------------------------------------------------------------------------------------------------------------------------

bitcount(key, start=None, end=None) -->获取name对应的值的二进制表示中 1 的个数
# 参数:     # key,Redis的name     # start,位起始位置     # end,位结束位置

--------------------------------------------------------------------------------------------------------------------------------------

strlen(name)  --> 返回name对应值的字节长度
# 返回name对应值的字节长度(一个汉字3个字节)

--------------------------------------------------------------------------------------------------------------------------------------

incr(self, name, amount=1)    --> 整型自增
# 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增
# 参数:     # name,Redis的name     # amount,自增数(必须是整数)

--------------------------------------------------------------------------------------------------------------------------------------

incrbyfloat(self, name, amount=1.0)  --> 浮点数自增
# 参数:     # name,Redis的name     # amount,自增数(浮点型)

--------------------------------------------------------------------------------------------------------------------------------------

decr(self, name, amount=1)   --> 整型自减
# 参数:     # name,Redis的name     # amount,自减数(整数)

--------------------------------------------------------------------------------------------------------------------------------------

append(key, value)  --> 在key后添加内容
# 参数:     key, redis的name     value, 要追加的字符串

--------------------------------------------------------------------------------------------------------------------------------------

附:用一个字符串实现的效果,很省空间

装逼神器:反思双11的时候淘宝怎么在大屏上实时显示有多少用户登录,哪个用户登录了?

答:我们每个用户都有一个唯一的用户ID,如果用户登录了,则获取到用户的userId,设置一个Redis的key且初始值为0[这里加上是login],login则记录登录用户的登录情况。如果说用户ID为100,则我设置login这个key的二进制的第100位置为1【setbit】,后续只需要统计login这个key中有多少个1就表示有多少个用户【bitcount】,获取这个1的位置,则获取到了用户的ID,根据ID就可以查询到用户的信息

Python补充

转载于:https://www.cnblogs.com/ftl1012/p/9426297.html

Redis学习---Redis操作之String相关推荐

  1. Redis之java操作(String/hash/set)

    目录 一.准备工作 运行虚拟机.mobaXtrem,Redis开启 二.Spring整合redis Redis字符串(String) Redis哈希(Hash) Redis列表(List) Redis ...

  2. Redis 学习---Redis 安装(2)

    Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统 ...

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

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

  4. redis学习-redis事务

    是什么 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞. 一次执行多个redis命令. 能干嘛 一个队列中,一次性.顺序性 ...

  5. redis学习-redis入门概述及简介

    是什么 Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运 ...

  6. redis学习——redis事务

    Redis事务的概念: Redis 事务的本质是一组命令的集合.事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会 ...

  7. python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)

    #-*- coding: utf-8 -*- importredis r= redis.Redis(host="126.56.74.190",port=639,password=& ...

  8. c语言实现string sds,redis学习 - sds字符串

    redis学习 - sds字符串 Redis 设计与实现:如果想要知道redis底层,这本书可以给予不少的帮助,非常推荐每一位学习redis的同学去翻一翻. sds字符串建议多看看源代码的实现,这篇文 ...

  9. 系统学习redis之五——redis数据类型之list类型及操作

    list数据类型介绍 list是一个链表结构,主要功能是push.pop.获取一个范围的所有值等等,操作中key可以理解为链表的名字.redis的list类型其实就是一个每个子元素都是string类型 ...

最新文章

  1. python装饰器-如何理解Python装饰器?
  2. java windows wifi_[转] win7 电脑无线网变身WiFi热点
  3. STM32-使用函数指针时莫名复位问题原因
  4. 线程基本编程——线程函数大全
  5. linux aemv7,无法在我的Ubuntu machin中安装“xlwings”
  6. 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring
  7. Windows 磁盘分区方法
  8. ubuntu环境配置之cuda10+tensorflow-gpu
  9. Java 32 进制_32位数字的十六进制表示
  10. 田彩蝶(帮别人名字作诗)
  11. pod打包原理_webpack打包原理解析
  12. Java语言分为三大平台:JavaSE、JavaEE、JavaME
  13. 你想要的英雄联盟人物模型素材,这里都能找到
  14. Tic Tac Toe
  15. 图表控件AnyChart使用JavaScript创建维恩图
  16. 安装Sql Server:以前的某个安装需要重新引导计算机以便使其更改生效。若要继续,请重启计算机,然后再次运行安装程序。
  17. python知识点智能问答_【每日一荐】智能问答API
  18. 【app测试】adb常用指令及华为卸载预置软件
  19. 微信开发者工具 页面颜色调整(多与黑白)
  20. 浅谈Web安全技术----RBI

热门文章

  1. 大数据分析机器学习(二)之直方图和多元线性回归
  2. centos 修改密码_centos7忘记root密码怎么改
  3. 一个STM32编译Makefile模板
  4. 一个使用多年的Makefile模板
  5. Spring Boot @SpringApplicationConfiguration 不能导入
  6. 【Flink】Flink SQL Cannot instantiate user function cannot assign instance LinkedMap FlinkKafkaConsum
  7. 【Flink】Flink 1.14 版本 新特性 Barrier 在流经算子做 checkpoint Barrier跳过 unaligned checkpoint
  8. 【Elasticsearch】Elasticsearch 7.4的 soft-deletes 是个什么鬼
  9. 【Flink】Flink 写入 kafka 报错 Failed to send data to Kafka: Expiring 4 record(s) for 20001 ms has passed
  10. 95-090-022-源码-bin脚本-CLI提交Job的时候加载插件