String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。

一、应用场景举例

String类型的是Redis所有数据结构中使用最为频繁的,也是最简单的数据结构,正所谓大道至简。

1、使用key-value来缓存一些不常改变的数据或,以减轻数据库的压力,如缓存组织架构信息、缓存权限配置信息、缓存用户访问次数、单点登录缓存用户sessionKey等,这种方式比较简单。

2、使用redis的原子性特性进行访问控制,如限制用户点击频率(每10秒可以点击一次)可用以下方式:

127.0.0.1:6379> setnx "order:confirm:{userId}" 1

(integer) 1

127.0.0.1:6379> expire "order:confirm:{userId}" 10

(integer) 1

以上操作中只有setnx成功的线程才允许继续执行下去,否则,将直接提示用户“点击频率过快”

因为 setnx是原子操作,所以只有一个线程可以设置成功,其它线程设置失败,符合要求

当线程setnx成功后,将可以执行接下来的操作,并为缓存key设置过期时间,过期后刚才设置的缓存失效,可以进行下一次点击

3、使用setbit和getbit命令来实现布隆过滤器,例如缓存所有商品id,防止缓存击穿问题

将所有商品编号n存到bitmap的第n位,1表示存在,这里假设有两个商品(12345,12346)

127.0.0.1:6379> setbit goodsIds 12345 1

(integer) 0

127.0.0.1:6379> setbit goodsIds 12346 1

(integer) 0

判断商品id是否存在

127.0.0.1:6379> getbit goodsIds 12345

(integer) 1

127.0.0.1:6379> getbit goodsIds 12347

(integer) 0

127.0.0.1:6379>

二、下表列出了 redis string基本的相关命令:

序号

命令

举例

1

SET key value

设置指定 key 的值

127.0.0.1:6379> set name 'xiaoming'

OK

2

GET key

获取指定 key 的值。

127.0.0.1:6379> get name

"xiaoming"

3

GETRANGE key start end

返回 key 中字符串值的子字符

127.0.0.1:6379> getrange name 4 8

"ming"

4

GETSET key value

将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

127.0.0.1:6379> getset name 'xiaohong'

"xiaoming"

5

GETBIT key offset

对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

127.0.0.1:6379> setbit video 100 1

(integer) 0

127.0.0.1:6379> getbit video 100

(integer) 1

6

MGET key1 [key2..]

获取所有(一个或多个)给定 key 的值。

127.0.0.1:6379> mget name name1

1) "xiaoming"

2) "xiaohong"

7

SETBIT key offset value

对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

127.0.0.1:6379> setbit video 100 1

(integer) 0

127.0.0.1:6379> getbit video 100

(integer) 1

8

SETEX key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

127.0.0.1:6379> setex name 10 xiaoming

OK

9

SETNX key value

只有在 key 不存在时设置 key 的值。

127.0.0.1:6379> setnx xiaoming_age 10

(integer) 1

127.0.0.1:6379> setnx xiaoming_age 18

(integer) 0

10

SETRANGE key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

127.0.0.1:6379> setrange name 3 le

(integer) 8

127.0.0.1:6379> get name

"xialeing"

11

STRLEN key

返回 key 所储存的字符串值的长度。

127.0.0.1:6379> strlen name

(integer) 8

12

MSET key value [key value ...]

同时设置一个或多个 key-value 对。

127.0.0.1:6379> mset name xiaoming name1 xiaohong

OK

13

MSETNX key value [key value ...]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

127.0.0.1:6379> msetnx name xiaoming name5 xiaogang

(integer) 0

127.0.0.1:6379> get name5

(nil)

14

PSETEX key milliseconds value

这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

127.0.0.1:6379> psetex name 1000 xiaoming

OK

15

INCR key

将 key 中储存的数字值增一。

127.0.0.1:6379> set age 10

OK

127.0.0.1:6379> incr age

(integer) 11

16

INCRBY key increment

将 key 所储存的值加上给定的增量值(increment) 。

127.0.0.1:6379> set age 10

OK

127.0.0.1:6379> incrby age 2

(integer) 12

17

INCRBYFLOAT key increment

将 key 所储存的值加上给定的浮点增量值(increment) 。

127.0.0.1:6379> set weight 40

OK

127.0.0.1:6379> incrbyfloat weight 1.5

"41.5"

18

DECR key

将 key 中储存的数字值减一。

127.0.0.1:6379> set age 10

OK

127.0.0.1:6379> decr age

(integer) 9

19

DECRBY key decrement

key 所储存的值减去给定的减量值(decrement) 。

127.0.0.1:6379> set age 18

OK

127.0.0.1:6379> decrby age 8

(integer) 10

20

APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

127.0.0.1:6379> append name -xionghaizi

(integer) 19

127.0.0.1:6379> get name

"xiaoming-xionghaizi"

Redis 5种数据结构及其使用场景举例--STRING的更多相关文章

  1. redis五种数据结构及使用场景

    string(字符串) 存储最简单的key-value结构. value可以是字符串.整数或者浮点数. 可以对整个字符串或者字符串的一部分执行操作: 对整数和浮点数执行自增或者自减操作. 使用场景: ...

  2. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景

    作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...

  3. Redis中5种数据结构的使用场景介绍

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/108.html?1455861435 一.redis 数据结构使用场景 原 ...

  4. Redis中5种数据结构的使用场景

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

  5. Redis 中 5 种数据结构的使用场景介绍

    这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String.Hash.List.Set.Sorted Set做了讲解,需要的朋友可以参考下 一.redis ...

  6. redis的5种数据结构的使用场景介绍

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

  7. Redis学习笔记之Redis中5种数据结构的使用场景介绍

    原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构 ...

  8. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  9. 2.Redis五种数据结构

    2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...

随机推荐

  1. Ubuntu单用户模式(安全模式)

           说下我遇到的情况,ubuntu服务器,防火墙关闭,连的外网.服务器中毒,病毒自动生成用户,然后病毒进程开启启动,进程启动后,cpu立马占满,服务器立马卡死,本想着服务器启动后通过top命 ...

  2. CentOS6.5安装RHadoop

    1.首先安装依赖包(各个节点都要安装) [root@Hadoop-NN-01 ~]$ yum install gcc-gfortran #否则报”configure: error: No F77 co ...

  3. Oracle的FIXED_DATE参数

    今天发现一个有意思的问题, 我们知道,在Oracle数据库中正常执行 select sysdate from dual 都可以返回当前主机的系统时间. 正常修改系统时间,对应的查询结果也会变成修改后的 ...

  4. c++中的构造(包括移动),赋值(包括移动),析构详解

    这五种操作:构造(包括移动),赋值(包括移动),析构其实就是定义了对一个对象进行构造,赋值,析构时的行为.理解这些行为并不复杂,复杂的是理解在继承下这些行为的表现.需要注意的是他们并不会被继承(传统意 ...

  5. 3:3 OGNL 表达式一

    一: 用例 (直接链式访问属性名,其实内部还是的调用set,get方法实现数据的流动); 二: 注意:表达式里面是没有方法的,只能点属性, 访问列表: (访问的时候加上#,表示访问非值栈的内容.) 访 ...

  6. 20155222 2016-2017-2 《Java程序设计》第8周学习总结

    20155222 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从J ...

  7. Linux命令: touch tem.txt创建txt文件

    touch tem.txt 创建txt文件

  8. Python:在windows下创建虚拟环境

    我们在用python开发的时候,随着开发应用的增多,比如这个项目用django开发后台,之后又用scrapy来开发爬虫应用等,如果不用虚拟环境这些软件包都会被放到python的site-package ...

  9. python进程join()函数理解

    Join()是主程序等我这个进程执行完毕了,程序才往下走  

  10. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...