redis 字符串(string)【需要掌握】
特点
- 一个键能存储512MB数据
- string类型是二进制安全的,可以存储任何数据,比如jpg图片或序列化对象
redis字符串数据类型的相关命令用于管理redis字符串值,基本语法如下:
语法
-
set key values 设置指定 key 的值
127.0.0.1:6379> set name panlifu OK 127.0.0.1:6379> get name "panlifu"
-
get key 获取指定key的值
127.0.0.1:6379> set name panlifu OK 127.0.0.1:6379> get name "panlifu"
-
getrange key start end 返回key中字符串的子字符,类似python中的切片功能,不同在于redis顾头顾尾
127.0.0.1:6379> set name panlifu OK 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> GETRANGE name 0 3 "panl"
-
getset key value 将给定key的值设为value,并返回key的旧值(old value)
127.0.0.1:6379> set name panlifu OK 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> GETRANGE name 0 3 "panl" 127.0.0.1:6379> GETSET name lt "panlifu" 127.0.0.1:6379> get name "lt"
-
getbit key offset 对key所储存的字符串值,获取指定偏移量上的位(bit) ?
-
setbit key offset value 对key所储存的字符串值,设置或清除指定偏移量上的位(bit) ?
-
mget key1 [key2...]获取所有(一个或多个)给定key的值
127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> set age 24 OK 127.0.0.1:6379> get age "24" 127.0.0.1:6379> get age name (error) ERR wrong number of arguments for 'get' command 127.0.0.1:6379> mget name age 1) "panlifu" 2) "24" 127.0.0.1:6379>
-
setex key secondes value 将值value关联到key,并将key的过期时间设置为secondes(以秒为单位)
# 第一种方法 127.0.0.1:6379> setex name 5 "panlifu" OK 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get name (nil) # 第二种方法 127.0.0.1:6379> set name panlifu ex 6 OK 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get name (nil)
-
setnx key value 只有在key不存在时设置key的值
127.0.0.1:6379> get name (nil) 127.0.0.1:6379> setnx name panlifu (integer) 1 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> setnx name lt (integer) 0 127.0.0.1:6379> get name "panlifu"
-
setrange key offset value 用value参数覆写给定key所存储的字符串值,从偏移量offset开始
127.0.0.1:6379> set name "hello world" OK 127.0.0.1:6379> get name "hello world" 127.0.0.1:6379> SETRANGE name 6 "redis" (integer) 11 127.0.0.1:6379> get name "hello redis"
-
mset key value [key value] 同时设置一个或者多个key -value对
127.0.0.1:6379> mset name panlifu age 18 OK 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get age "18"
-
msetnx key value [key value] 同时设置一个或者多个key-value对,当且仅当所有给定key都不存在
127.0.0.1:6379> msetnx sex boy height 120 (integer) 1 127.0.0.1:6379> get sex "boy" 127.0.0.1:6379> get height "120" 127.0.0.1:6379> msetnx name lt age 17 (integer) 0 127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> get age "18"
总结:key前面有m一般都指 可以设置多个 键值对。 键后面带nx 一般表示 只有当key不存在时,才能设置该key。
-
strlen key 返回 key 所储存的字符串值的长度
127.0.0.1:6379> get name "panlifu" 127.0.0.1:6379> strlen name (integer) 7
-
psetex key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位
127.0.0.1:6379> psetex name 1000 hehe OK 127.0.0.1:6379> get name "hehe" 127.0.0.1:6379> get name (nil)
总结:当键以ex结尾时,一般表示设置 key的过期时间,单位为秒。当键前面有p且后面有ex时,也表示设置key过期时间,单位为毫秒
-
incr key 将key中存储的数字值增1
127.0.0.1:6379> set age 19 OK 127.0.0.1:6379> get age "19" 127.0.0.1:6379> incr age (integer) 20 127.0.0.1:6379> incr age (integer) 21 127.0.0.1:6379> get age "21" 127.0.0.1:6379> set age "19" OK 127.0.0.1:6379> get age "19" 127.0.0.1:6379> incr age (integer) 20 127.0.0.1:6379> incr age (integer) 21 127.0.0.1:6379> get age "21" 127.0.0.1:6379> incr age (integer) 22 127.0.0.1:6379> get age "22" 127.0.0.1:6379> type age string
总结:string数据类型中的数据,value的数据类型都是string类型。只要string全为数字,即可使用incr键
-
incrby key increment 将key所储存的值加上给定的浮点增量值
127.0.0.1:6379> get age "27" 127.0.0.1:6379> incrby age 3 (integer) 30 127.0.0.1:6379> get age "30"
-
incrbyfloat key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
127.0.0.1:6379> get age "30" 127.0.0.1:6379> incrbyfloat age 1.5 "31.5" 127.0.0.1:6379> get age "31.5"
-
decrby key decrement key 所储存的值减去给定的减量值(decrement)
127.0.0.1:6379> incrbyfloat age -1.5 "30" 127.0.0.1:6379> decrby age 5 (integer) 25 127.0.0.1:6379> get age "25"
-
decr key 将 key 中储存的数字值减一。
-
append key value 果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
127.0.0.1:6379> get age "25" 127.0.0.1:6379> append age hehe (integer) 6 127.0.0.1:6379> get age "25hehe"