初探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,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值 ...
随机推荐
- 一夜搞懂 | JVM 类加载机制
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习导图 一.为什么要学习类加载机制? 今天想跟大家唠嗑唠嗑Java的类加载机制,这是Java的一个很重要的创 ...
- 搞定SEO,看这一篇就够了
一.SEO入门 1.SEO是什么? SEO(Search Engine Optimization)中文意思为搜索引擎优化.在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在 ...
- js 中的yield
yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器的调用者.它可以被认为是一个基于生成器的版本的return关键字. yield关键字实 ...
- 武林高手?敏捷开发,唯velocity取胜
去年学习软件工程教材,初识敏捷开发.目前所在的团队,也是使用敏捷开发方式.今天读了这篇文章,对于这段时间的效率有所警醒.其次,个人认同文章中的用户故事,结对编程思想. 文章援引:http://gitb ...
- HTML 基础(六)
一.脚本 JavaScript 是 HTML 页面具有更强的动态和交互性 <script> 标签 <script> 标签用于定义客户端脚本,<script> 元素既 ...
- Java中使用RSA算法加密
Java中使用RSA算法加密 概述 RSA加密算法是一种非对称加密算法 RSA加密的方式 使用公钥加密的数据,利用私钥进行解密 使用私钥加密的数据,利用公钥进行解密 RSA是一对密钥.分别是公钥和私钥 ...
- docker-compose搭建redis哨兵集群
头脑风暴 出于学习目的,您可以很轻松地在docker环境下运行redis的单个实例,但是如果您需要在生产环境中运行它,那么必须将Redis部署为HA(High Avaliable)模式. Redis ...
- javascript中的符号 == 和 === 的区别
== 表示相等 即仅仅比较两边变量的数值是否相等. 相等运算符隐藏的类型转换,会带来一些违反直觉的结果. 这就是为什么建议尽量不要使用相等运算符. 至于使用相等运算符会不会对后续代码造成意外影响,答 ...
- js函数基础回顾
回头又跑去看了下尚硅谷的js基础视频 https://www.bilibili.com/video/av22958172/?p=51. 便做了如下笔记: 1.函数也是一个对象 2.函数可以封装一些功能 ...
- Blazor入门笔记(1)-从0构建一个组件
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.创建项目 ...