欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis学习笔记(六)----Redis数据类型之String

程序员文章站 2022-07-05 10:18:54
...

前言

Redis有五种数据类型: String, Hash, List, Set, Zset,下面对先对String类型作详细的介绍

一. String (相当于Java中的字符串)

1.1简介:

string 是redis最基本的类型,一个key对应一个value
string类型是二进制安全的,意思是redis的string可以包含任何数据。比如jpg图片或者序列化对象。
string 类型是Redis最基本的数据类型,一个键最大能存储512MB

二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改,破译等。如果被攻击,能够及时检测出来。

二进制安全特点:
<1>编码,解码发生在客户端完成,执行效率高
<2>不需要频繁的编解码,不会出现乱码

1.2 String命令:

(命令不用区分大小写)
赋值语法:
[1] Redis set 命令常用于设置key的值,如果key已存储值,set 就是写旧值,且无视类型

 set  key_name  value

[2] 只有在key不存在时设置key的值。 Setnx(SET if Not exists) 命令在指定的key不存在时,为key设置指定的值

 setnx key value     //(面试问题) 解决分布锁的方案之一

[3] 同时设置一个或多个key-value对

 mset  key value [key value....]

取值语法:
[4] Redis GET 命令用于获取指定 key 的值,如果key不存在,返回 nil。如果key存储的值不是字符串类型,返回一个错误

get  key_name

[5] 用于获取存储在指定 key 中字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)

getrange key start end

比较重要的命令
[6] 自增/自减:

 incr key_name    # Incr 命令将key中存储的数字增1。如果key不存在,那么key的值先被初始化为0,然后再执行INCR操作
 自增:increby key_name 增量值
 Increby 命令将key中存储的数字加上指定的增量值

[7] 自减: decr 命令将key中存储的数字减1

decr key_name  或 decrby key_name 减值

[8] 字符串拼接:Append 命令用于为指定的 key 追加至末尾,如果不存在,为其赋值

append key_name value

以下的不是经常使用
[9] 对 key 所存储的字符串值,获取指定偏移量上的位(bit)

getbit  key offset

[10] 获取所有(一个或多个)给定 key 的值

mget  key1 [key2...]

[11] Getset命令用于设置指定 key 的值,并返回 key 的旧值,当 key 不存在时,返回nil

GETSET语法:getset  key_name value

[12] 返回 key 所存储的字符串值的长度

strlen  key

[13] 删除语法:

del  key_name:删除指定key,如果存在,返回值数字类型

1.3 应用场景

[1] string通常用于保存单个字符串或JSON字符串数据
[2] 因为String是二进制安全的,所以你完全可以把一个图片文件内容作为字符串来存储
[3] 计数器(常规key-value缓存应用,常规计数:微博数,粉丝数)
INCR等指令本身就具有原子操作特性,所以我们完全可以利用redis的INCR,INCRBY,DECR,DECRBY等指令来实现原子计数的效果。假如,在某种场景下有3个客户端同时读取mynum的网站并取值(值为2),然后对其同时进行加1操作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上统计计数的需求

相关标签: Redis