Redis类型及相关命令行

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

1.set key value(设置值)

Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

redis 127.0.0.1:6379> SET key "value"
OK

2.get key(通过key获取对应的值)

Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 null。如果key 储存的值不是字符串类型,返回一个错误(“WRONGTYPE Operation against a key holding the wrong kind of value”)。

redis> GET key ## key存在时并且是字符串类型
"value"
redis> GET key ## key不存在
(nil)
redis> GET key ## key存在时但不是字符串类型
(error) ERR Operation against a key holding the wrong kind of value

3.getrange key start end(获取子字符串)

Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

redis 127.0.0.1:6379> SET mykey "This is my test key"
OK
redis 127.0.0.1:6379> GETRANGE mykey 0 3
"This"
redis 127.0.0.1:6379> GETRANGE mykey 0 -1
"This is my test key"
redis 127.0.0.1:6379> GETRANGE mykey 0 -2
"This is my test ke"
redis 127.0.0.1:6379> GETRANGE mykey 18 -1
"y"

4.getset key value(替换值)

Redis Getset 命令用于设置指定 key 的值,并返回 key 的旧值。

redis> getset db mongodb    # 没有旧值,返回 nil
(nil)

redis> get db
"mongodb"

redis> getset db redis      # 返回旧值 mongodb
"mongodb"

redis> get db
"redis"

5.mget key1 [key2…](获取所有(一个或多个)给定 key 的值。)

Redis Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

redis 127.0.0.1:6379> set key1 "hello"
OK
redis 127.0.0.1:6379> set key2 "world"
OK
redis 127.0.0.1:6379> mget key1 key2 someOtherKey
1) "Hello"
2) "World"
3) (nil)

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

Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

redis 127.0.0.1:6379> setex mykey 60 redis
OK
redis 127.0.0.1:6379> ttl mykey #查询剩余时间
60
redis 127.0.0.1:6379> get mykey
"redis

7.setnx key value(只有在 key 不存在时设置 key 的值)

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。

返回值
设置成功,返回 1 。 设置失败,返回 0 。

redis> EXISTS job                # job 不存在
(integer) 0

redis> SETNX job "programmer"    # job 设置成功
(integer) 1

redis> SETNX job "code-farmer"   # 尝试覆盖 job ,失败
(integer) 0

redis> GET job                   # 没有被覆盖
"programmer"

Hash(哈希)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

1.hset key field value(单个设置值)

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。

2.hmset key field1 value1 field2 value2 (同时将多个 field-value (域-值)对设置到哈希表 key 中。)

Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。
此命令会覆盖哈希表中已存在的字段。
如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

3.hsetnx key field value(只有在字段 field 不存在时,设置哈希表字段的值)

Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,操作无效。
如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

4.hget key field(获取存储在哈希表中指定字段的值)

Redis Hget 命令用于返回哈希表中指定字段的值。

# 字段存在

redis> HSET site redis redis.com
(integer) 1

redis> HGET site redis
"redis.com"


# 字段不存在

redis> HGET site mysql
(nil)

5.hgetall key(获取在哈希表中指定 key 的所有字段和值)

Redis Hgetall 命令用于返回哈希表中,所有的字段和值。
在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

List(列表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

1. lpush key value1…(将一个或多个值插入到列表头部)

Redis Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。

**注意:**在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值。

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> LPUSH list1 "bar"
(integer) 2
127.0.0.1:6379> LRANGE list1 0 -1
1) "bar"
2) "foo"

2.lpushx key value(将一个值插入到已存在的列表头部)

Redis Lpushx 将一个值插入到已存在的列表头部,列表不存在时操作无效。

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> LPUSHX list1 "bar"
(integer) 2
127.0.0.1:6379> LPUSHX list2 "bar"
(integer) 0
127.0.0.1:6379> LRANGE list1 0 -1
1) "bar"
2) "foo"

3.lindex key index(通过索引获取列表中的元素)

Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

redis 127.0.0.1:6379> LPUSH mylist "World"
(integer) 1

redis 127.0.0.1:6379> LPUSH mylist "Hello"
(integer) 2

redis 127.0.0.1:6379> LINDEX mylist 0
"Hello"

redis 127.0.0.1:6379> LINDEX mylist -1
"World"

redis 127.0.0.1:6379> LINDEX mylist 3        # index不在 mylist 的区间范围内
(nil)

4. lrange key start stop(获取列表指定范围内的元素)

Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LRANGE mylist 0 0
1) "one"
redis> LRANGE mylist -3 2
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist -100 100
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist 5 10
(empty list or set)

Set(集合)

zset(sorted set:有序集合)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金肴羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值