Redis支持五种数据类型,string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set)有序集合等。
1. string类型
string是redis的最基本数据类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string类型可以包含任何数据。比如jpg图像或者序列化的对象。
string类型是redis最基本的数据类型,一个键最大能存储512MB。
二进制安全:在传输数据时,保证二进制数据的信息安全。也就是不被篡改、破译等。如果被攻击,能够及时检测出来。
二进制安全的特点:
(1)编码、解码在客户端完成,执行效率高。
(2)不需要频繁的编解码,不会出现乱码。
SET key value
SET 命令用于设定给定key的值,如果key存在,便覆盖旧值,且无视类型。
SETNX key value
SETNX(SET if Not eXists)命令在指定key不存在的时候,为key设置给定值。
[root@localhost redis-5.0.4]# ./bin/redis-cli
127.0.0.1:6379> SET a 1
OK
127.0.0.1:6379> GET a
"1"
127.0.0.1:6379> SETNX a 2
(integer) 0
127.0.0.1:6379> GET a
"1"
127.0.0.1:6379> SETNX b 2
(integer) 1
127.0.0.1:6379> GET b
"2"
GET key
获取指定key的值,如果key不存在,返回nil。如果key储存的不是字符串类型,返回一个错误。
127.0.0.1:6379> SET a 1
OK
127.0.0.1:6379> GET a
"1"
127.0.0.1:6379> GET not_exist_key
(nil)
127.0.0.1:6379>
127.0.0.1:6379> hset aSet a a
(integer) 1
127.0.0.1:6379> hset aSet b b
(integer) 1
127.0.0.1:6379> GET aSet
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> HGET aSet a
"a"
127.0.0.1:6379> HGET aSet b
"b"
GETRANGE key start end
用于获取存储在指定key中的字符串的子字符串。字符串的截取范围由start和end决定(包括start和end)。
127.0.0.1:6379> SET a 'hello redis'
OK
127.0.0.1:6379> GET a
"hello redis"
127.0.0.1:6379> GETRANGE a 0 3
"hell"
127.0.0.1:6379> GETRANGE a 0 4
"hello"
MGET key
获取所有给定key的值
127.0.0.1:6379> SET a 1
OK
127.0.0.1:6379> SET b 2
OK
127.0.0.1:6379> MGET a b
1) "1"
2) "2"
127.0.0.1:6379>
GETSET key value
用于设置指定key的值,并返回key的旧值,当key不存在时,返回nil。
127.0.0.1:6379> SET a 1
OK
127.0.0.1:6379> GETSET a 2
"1"
127.0.0.1:6379> GET a
"2"
127.0.0.1:6379>
STRLEN key
返回key所存储的字符串长度。
127.0.0.1:6379> SET a 'hello world'
OK
127.0.0.1:6379> STRLEN a
(integer) 11
DEL key
删除key。
127.0.0.1:6379> SET a hello
OK
127.0.0.1:6379> GET a
"hello"
127.0.0.1:6379> DEL a
(integer) 1
127.0.0.1:6379> GET a
(nil)
127.0.0.1:6379>
INCR
自增,将key中存储的字符值增1.如果key不存在,key会被初始化为0,再执行INCR操作。
DECR
自减。将key中存储的字符值减1.如果key不存在,key会被初始化为0,再执行DECR操作。
127.0.0.1:6379> INCR count
(integer) 1
127.0.0.1:6379> INCR count
(integer) 2
127.0.0.1:6379> GET count
"2"
127.0.0.1:6379> DECR count
(integer) 1
127.0.0.1:6379> DECR count
(integer) 0
127.0.0.1:6379> DECR count
(integer) -1
INCRBY key 增量值。
DECRBY key 增量值。
127.0.0.1:6379> GET a
(nil)
127.0.0.1:6379> INCRBY a 10
(integer) 10
127.0.0.1:6379> GET a
"10"
127.0.0.1:6379> DECRBY a 20
(integer) -10
127.0.0.1:6379> DECRBY a -30
(integer) 20
127.0.0.1:6379> GET a
"20"
127.0.0.1:6379>
APPEND key value
将value附在指定key的尾部,如果不存在,为其赋值。
127.0.0.1:6379> SET a 'hello '
OK
127.0.0.1:6379> APPEND a 'world!'
(integer) 12
127.0.0.1:6379> GET a
"hello world!"
127.0.0.1:6379>
127.0.0.1:6379> DEL a
(integer) 1
127.0.0.1:6379> GET a
(nil)
127.0.0.1:6379> APPEND a hello
(integer) 5
127.0.0.1:6379> GET a
"hello"
127.0.0.1:6379>