Redis学习笔记(六)----Redis数据类型之String
前言
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的这个特性来实现业务上统计计数的需求