初探Redis-基础类型String
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的更多相关文章
- 一文了解:Redis基础类型
Redis基础类型 Redis特点 开源的,BSD许可高级的key-value存储系统 可以用来存储字符串,哈希结构,链表,集合 安装 windows:https://github.com/micro ...
- Redis基础类型常用操作命令
Redis基础类型常用操作命令 概念:Redis是用C语言开发的一个开源的高性能键值对数据库. 特征: 数据间没有必然的联系 内部采用单线程机制进行工作 高性能 多数据类型支持 字符串类型 Strin ...
- Redis学习笔记(2) Redis基础类型及命令之一
1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...
- Redis学习笔记(3) Redis基础类型及命令之二
1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...
- 2、Python 基础类型 -- String 字符串类型
字符串常用的方法: 1.分割:string.split(str="", num=string.count(str)) 以 str 为分隔符切片 string,如果 num 有指 ...
- Redis基础教程
说明:本文中涉及的代码是c#所写,连接redis的第三方驱动为ServiceStack.Redis.连接redis的客户端软件为redis-desktop-manager. 一.Redis是什么 Re ...
- redis基础的字符串类型
redis —— 第二篇 基础的字符串类型 我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞 ...
- Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...
- 基础类型转化成String 转
基础类型转化成String 在程序中你可能时常会需要将别的类型转化成String,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值 ...
随机推荐
- PHP7内核(五):系统分析生命周期
上篇文章讲述了模块初始化阶段之前的准备工作,本篇我来详细介绍PHP生命周期的五个阶段. 一.模块初始化阶段 我们先来看一下该阶段的每个函数的作用. 1.1.sapi_initialize_reques ...
- Arcgis中制作热力图
摘要 使用核函数根据点或折线 (polyline) 要素计算每单位面积的量值以将各个点或折线 (polyline) 拟合为光滑锥状表面. 插图
- C++最简打开网页的方法
system("explorer https://pay.747fz.com");
- AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'处理办法
原因:安装的tensorflow版本和keras版本不匹配,只需卸载keras,重新安装自己tensorflow对应的版本. Keras与tensorflow版本匹配查询网站
- P3376 【模板】网络最大流( Edmonds-krap、Dinic、ISAP 算法)
P3376 [模板]网络最大流( Edmonds-krap.Dinic.ISAP 算法) 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S ...
- 多线程学习笔记(五)---- 在JDK文档的使用
1.前言 我们经常在JDK文档中见到一些类上的介绍说,该类是"安全的"."不安全"."效率高"."效率低"的词眼.这里, ...
- 多线程学习笔记(四)---- Thread类的其他方法介绍
一.wait和 sleep的区别 wait可以指定时间也可以不指定时间,而sleep必须指定时间: 在同步中时,对cpu的执行权和锁的处理不同: wait:释放执行权,释放锁:释放锁是为了别人noti ...
- VBScript - 弹出“文件选择对话框”方法大全!
本文记录,VBScript 中,各种打开 "文件选择对话框" 的方法. 实现方法-1 (mshta.exe): 首先,我们要实现的就是,弹出上面的这个"文件选择对话框&q ...
- 创建一个tar备份包
创建一个tar备份包 2.1问题 本例要求使用tar工具完成以下备份任务: 创 ...
- 【Linux】Linux(一)Linux常用命令
一 命令行提示符 1.[root@localhost ~]# 当前登录用户@主机名:当前所在目录$ # 超级用户 $ 普通用户 当前所在目录:~ 用户家目录 管理员 /root 普通用户 /home ...