Redis 五大数据类型之 String(字符串)

五大数据类型(String)

官方文档

Redis 五大数据类型

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) 与范围查询, bitmapshyperloglogs地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting)LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

Redis-key

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *    # 查看所有的key
(empty list or set)
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name hudu    # set key
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> EXISTS name    # 查看是否存在key
(integer) 1
127.0.0.1:6379> EXISTS name1
(integer) 0
127.0.0.1:6379> MOVE name 1    # 移动到指定的数据库
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name hudu
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> EXPIRE name 10    # 设置过期时间,秒
(integer) 1
127.0.0.1:6379> ttl name    # 查看key的剩余时间(time to live)
(integer) 6
127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> DEL age    # 移除数据
(integer) 1
127.0.0.1:6379> type name    # 查看数据类型
string

String(字符串)

127.0.0.1:6379> set k1 v1    # 设置值
OK
127.0.0.1:6379> get k1    # 获取值
"v1"
127.0.0.1:6379> keys *    # 显示所有的值
1) "k1"
127.0.0.1:6379> EXISTS k1    # 判断是否存在值
(integer) 1
127.0.0.1:6379> APPEND k1 hello    # 追加字符串,如果当前值不存在相当于set一个字符串
(integer) 7
127.0.0.1:6379> STRLEN k1    # 查看值的长度
(integer) 7
127.0.0.1:6379> APPEND k1 ,hudu
(integer) 12
127.0.0.1:6379> STRLEN k1
(integer) 12
127.0.0.1:6379> get k1
"v1hello,hudu"
127.0.0.1:6379> set views 0    # 初识浏览量为0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> INCR views    # 自增1
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> DECR views    # 自减1
(integer) 0
127.0.0.1:6379> get views
"0"
127.0.0.1:6379>  incrby views 10    # 设置步长,指定增量
(integer) 10
127.0.0.1:6379> get views
"10"
127.0.0.1:6379> DECRBY views 5
(integer) 5
127.0.0.1:6379> get views
"5"
127.0.0.1:6379> set k1 hello,hudu
OK
127.0.0.1:6379> get k1
"hello,hudu"
127.0.0.1:6379> GETRANGE k1 0 5    # 获取字符串,是闭区间
"hello,"
127.0.0.1:6379> GETRANGE k1 0 -1    #获取整个字符串的值
"hello,hudu"
127.0.0.1:6379> set k2 abcdefg
OK
127.0.0.1:6379> get k2
"abcdefg"
127.0.0.1:6379> SETRANGE k2 1 xx    # 替换指定位置开始的字符串
(integer) 7
127.0.0.1:6379> GETRANGE k2 0 -1
"axxdefg"
127.0.0.1:6379>
  • setex、setnx
# setex(set with expire)# 设置过期时间
# setnx (set if not exist)# 不存在再设置,在分布式锁中常用

127.0.0.1:6379> setex k3 30 hello    # 设置key3 的值为 hello,30秒后过期
OK
127.0.0.1:6379> ttl k3
(integer) 27
127.0.0.1:6379> ttl k3
(integer) 0
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
127.0.0.1:6379> setnx mykey redis    # 如果mykey不存在创建mykey
(integer) 1
127.0.0.1:6379> setnx mykey mongodb    # 如果mykey存在创建失败
(integer) 0
127.0.0.1:6379> get mykey
"redis"
127.0.0.1:6379>  ttl k3
(integer) -2
  • mset、mget、msetnx
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3    # 同时设置多个k和v
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k3"
3) "k2"
127.0.0.1:6379> mget k1 k2 k3    # 同时获取多个k和v
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4    # msetnx是原子性操作,要么一起成功,要么一起失败
(integer) 0
127.0.0.1:6379> get k4
(nil)
  • 对象
set user:1 {name:hudu,age:22}    # 设置一个user:1对象,值为json字符串来保存一个对象

# 这里的key是一个巧妙地设计:user:{id}:{filed},如此设计在Redis中是完全OK127.0.0.1:6379[1]> mset user:1:name zhangsan user:1:age 20
OK
127.0.0.1:6379[1]> mget user:1:name user:1:age
1) "zhangsan"
2) "20"
  • getset
127.0.0.1:6379[1]> getset db redis    # 如果不存在值,则返回 nil
(nil)
127.0.0.1:6379[1]> get db
"redis"
127.0.0.1:6379[1]> getset db mongodb    # 如果存在值,获取原来的值,并设置新的值
"redis"

String 类型的使用场景:value除了我们的字符串还可以是我们的数字

  • 计数器
  • 统计多单位的数量
  • 粉丝数
  • 对象缓存存储
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!