Redis存在五种基础类型:字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。String的出镜率算是最高的。本次列举出String的常用操作。

  Redis官网:https://redis.io/

一、字符串(String)介绍

  字符串(String)是Redis 中最基本的类型,一个 key 对应着一个 value可以理解为字典类型,key-value形式。该类型二进制安全的,对应值可以存储任何数据,如图片或者序列化后的对象,对应值最大可以存储 512MB 的数据。但不是建议去最大化存储,存储数据尽量小为最佳使用。从操作出发,常用操作为这两类:

  • 存储和操作字符串;
  • 存储和计算int和float类型的数据。

 

二、字符串(String)常用Api 

  • 设置值

  

  eg:设置30秒生存时间,且必须firstkey不存在。

  

  • 获取值

  

  eg:

  

  • 批量设置值与批量获取值

  

  eg:

  

  • 递增或递减值(△1)

   

  eg: 

  

  • 递增或递减值(△n) 

  

  eg:

  

  • 递增浮点数值(△n) 

  

  eg:

  

  • 获取旧值并设置新值

  

  eg:

  

三、字符串(Strng)不常用Api

  • 追加值

  

  eg:

  

  • 查询key

  

  eg:

  

  • 删除key

  

  eg:

  

  • 设置剩余生存时间

  

  eg:设置firstkey生存时间30秒,并通过ttl查看剩余生存时间。

  

  • 获取剩余生存时间 

  

  eg:

  

  • 设置永久生存

  

  eg:

  

  • 获取字符串长度

  

  eg:

  

  • 覆盖指定位置开始处的字符

  

  eg:

  

  • 获取指定位置范围字符串

  

  eg:

  

四、字符串(String)简单应用场景

  模拟限量商品秒杀场景,来运用一下redis。采用多线程随机请求限量商品,并且用redis控制商品数量的减少。

1、采用StackExchange.Redis的Nuget包来连接和管理Redis。并封装一套Redis的操作类。

  

2、采用单例模式管理Redis的实例。

  

3、模拟多用户限量秒杀模型。通过Redis的incr和decr操作控制商品数量。

/// <summary>
/// 超卖模型
/// </summary>
public class OverSell
{
private static bool IsGoOn = true;//秒杀活动是否结束 public static void Run()
{
RedisBase.StringService.StringSet("Stock", ); for (int i = ; i < ; i++)
{
int k = i;
Task.Run(() =>//每个线程就是一个模拟用户请求
{
if (IsGoOn)
{
var index = RedisBase.StringService.StringDecrement("Stock");//-1并且返回
if (index >= )
{
Console.WriteLine($"{k.ToString("")} Success,Product Index:{index}");
//...
}
else
{
if (IsGoOn)
{
IsGoOn = false;
}
Console.WriteLine($"{k.ToString("")} Failed,Product Index:{index}");
}
}
else
{
Console.WriteLine($"{k.ToString("")} Finish......");
}
});
}
}
}

4、运行效果,部分线程抢购到商品,部分线程同步抢购时,商品没有了返回负数,部分线程抢购时,活动已结束。

   

 仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate文件夹)

2020-04-25,望技术有成后能回来看见自己的脚步

初探Redis-基础类型String的更多相关文章

  1. 一文了解:Redis基础类型

    Redis基础类型 Redis特点 开源的,BSD许可高级的key-value存储系统 可以用来存储字符串,哈希结构,链表,集合 安装 windows:https://github.com/micro ...

  2. Redis基础类型常用操作命令

    Redis基础类型常用操作命令 概念:Redis是用C语言开发的一个开源的高性能键值对数据库. 特征: 数据间没有必然的联系 内部采用单线程机制进行工作 高性能 多数据类型支持 字符串类型 Strin ...

  3. Redis学习笔记(2) Redis基础类型及命令之一

    1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...

  4. Redis学习笔记(3) Redis基础类型及命令之二

    1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...

  5. 2、Python 基础类型 -- String 字符串类型

    字符串常用的方法: 1.分割:string.split(str="", num=string.count(str))   以 str 为分隔符切片 string,如果 num 有指 ...

  6. Redis基础教程

    说明:本文中涉及的代码是c#所写,连接redis的第三方驱动为ServiceStack.Redis.连接redis的客户端软件为redis-desktop-manager. 一.Redis是什么 Re ...

  7. redis基础的字符串类型

    redis —— 第二篇 基础的字符串类型 我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞 ...

  8. Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串

    一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...

  9. 基础类型转化成String 转

    基础类型转化成String 在程序中你可能时常会需要将别的类型转化成String,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值 ...

随机推荐

  1. 微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏

    微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript Interface) ...

  2. stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)

    自从接触到stm32cubemx后,发现使用起来很方便,用来做项目开发的话,由于是图形化操作界面,工作效率比较快.如果要学习操作系统,以前的IDE如keil,IAR等IDE对操作系统的代码调试起来不够 ...

  3. [Jenkins01] Jenkins的安装和部署(jenkins教程)

    一.jenkins的下载.安装以及环境的搭建部署. 1.什么是jenkins以及它的作用: Jenkins 是一个可扩展的持续集成(CI)平台.它只是一个平台,真正运作的都是插件. Jenkins的主 ...

  4. [HDU1029]Ignatius and the Princess IV<桶 水题>

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1029 题目大意: 多组数据,每组数据先给一个n,然后给n各数字,找出n各数字中出现了至少(n+1)/2 ...

  5. c语言提取浮点型数据的整数部分与小数部分几种方法

    一 前记 最近涉及到把各种传感器的数据通过wifi和bt传输出去,这就涉及到了浮点传输的问题,为了方便传输,笔者的做法一般是把小数和整数部分分开,分别传输,这就比较简单明晰了. 二 方法论 其实,把浮 ...

  6. CSS3实现3D转换

    实现效果: 当鼠标悬停在图片上面时,图片发生翻转,文案出来,鼠标取消之后就又恢复 实现代码: <!DOCTYPE html> <html lang="en"> ...

  7. c#的全局异常捕获

    以下操作在Program.cs中 1.最简单的方式try...catch.. 一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { App ...

  8. Python 程序慢的像蜗牛,我该怎么办?

    1. “一猿小讲”的风格就是多元化,偶尔会真情吐露一下程序猿的内心:偶尔也结合自己的经历畅聊一些经验杂谈:其中也不乏幽默风趣的技术故事.分享是件快乐的事情,工作之余,有时间我就尽力多码字,多推几篇文章 ...

  9. stm32:extern关键字

    参考:http://c.biancheng.net/view/404.html 1.在一个文件中: #include <stdio.h> int max(int x,int y); int ...

  10. Redis 笔记(二)—— STRING 常用命令

    字符串中不仅仅可以存储字符串,它可以存储以下 3 中类型的值 : 字符串 整数 浮点数 Redis 可以对字符串进行截取等相关操作,对整数.浮点数进行增减操作. 自增自减命令 命令 用例和描述 INC ...