五大数据类型
官方文档
全文翻译
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命令是一样的
- 添加 set name swc
- 查询 get name
- 查看所有的key keys *
- 移除key move name
- 设置过期时间 expire name 10
- 查看key的剩余时间 ttl name
- 查看key得类型 type name
…
后面遇到不会的命令,可以在官网查看帮助文档!
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>