你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Redis五大数据类型之String

2021/12/24 0:16:58

五大数据类型

官方文档

image-20211202140317415

全文翻译

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

我们现在讲的命令一定要记住,后面使用springBoot操作redis命令是一样的

  1. 添加 set name swc
  2. 查询 get name
  3. 查看所有的key keys *
  4. 移除key move name
  5. 设置过期时间 expire name 10
  6. 查看key的剩余时间 ttl name
  7. 查看key得类型 type name

​ …

后面遇到不会的命令,可以在官网查看帮助文档!

image-20211202141555846

String(字符串)

##############################################
127.0.0.1:6379> set key1 v1   # 设置值
OK
127.0.0.1:6379> get key1      # 获取值
"v1"
127.0.0.1:6379> keys *        # 获取所有的key
1) "key1"
2) "name"
127.0.0.1:6379> EXISTS key1   #某一个key是否存在
(integer) 1
127.0.0.1:6379> APPEND key1 "hello"  #追加字符串,如果key不存在,则新建
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> STRLEN key1    # 获取key值得长度
(integer) 7
127.0.0.1:6379> append key1 ",shiweichao"
(integer) 18
127.0.0.1:6379> ll
127.0.0.1:6379> STRLEN key1
(integer) 18
127.0.0.1:6379> get key1
"v1hello,shiweichao"
##############################################
# 实现自增自减
i++

127.0.0.1:6379> set views 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> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views     # 自减1
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incrby views 10   # 增加步长10
(integer) 10
127.0.0.1:6379> incrby views 10
(integer) 20
127.0.0.1:6379> decrby views 5     # 减少步长5
(integer) 15

##############################################
# range
# 截取字符串-getRange
127.0.0.1:6379> set key1 "hello,shiweichao"
OK
127.0.0.1:6379> get key1
"hello,shiweichao"
127.0.0.1:6379> GETRANGE key1 0 3     # 截取字符串【0,3】
"hell"
127.0.0.1:6379> getrange key1 0 -1    # 查看所有字符串和get key是一样的
"hello,shiweichao"

# 替换字符串--setRange
127.0.0.1:6379> get key2
"abcdefg"
127.0.0.1:6379> SETRANGE key2 2 xx  # 将字符串从第二个位置替换
(integer) 7
127.0.0.1:6379> get key2
"abxxefg"
##############################################
# setex (set with expire) # 设置过期时间
# setnx (set if not expire) # 不存在再设置(在分布式锁中常使用)
127.0.0.1:6379> setex key3 30 123  # 设置key3 值为123,并30 秒后过期
OK
127.0.0.1:6379> setnx key3 "redis"  # 如果key不存在,再设置
(integer) 0
127.0.0.1:6379> 

##############################################
# mset  #一次设置多个键值对
# mget  # 一次获取多个值

127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3   # 同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 # msetnx是一个原子性的操作,要么一起成功,要么一起失败!
(integer) 0
127.0.0.1:6379> 

# 对象
set user:1 {name:zhangsan,age:3} # 设置一个user:1对象值为json对象来保存一个对象。

#这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全ok的。

127.0.0.1:6379> mset user:1:name "zhangsan" user:1:age 3
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "3"
127.0.0.1:6379> 

##############################################
#getset 先get后set
127.0.0.1:6379> getset db redis  # 如果不存在,则返回null; 如果存在则先返回,后设置新的值
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379>