Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ。它支持多种类型的数据结构,如字符串(Strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询,bitmaps、hyperloglogs和地理空间(geospatial)索引半径查询。redis内置了复制(replication)、LUA脚本(Lua scripting)、LRU驱动 事件(LRU eviction),事务(transaciotns)和不同级别的磁盘持久化(persistence),并通过redis哨兵(sintinel)和自动分区(Cluster)提供高可用性(high availability)。
127.0.0.1:6379> keys * # 查看数据库所有的key (empty list or set) 127.0.0.1:6379> set name gx # 设置 key OK 127.0.0.1:6379> get name # 获取key的值 "gx" 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> exists name # 判断该key是否存在 (integer) 1 127.0.0.1:6379> exists age (integer) 0 127.0.0.1:6379> expire name 10 # 设置key失效时间(秒) (integer) 1 127.0.0.1:6379> ttl name # 查看key有效的剩余时间 (integer) 4 127.0.0.1:6379> ttl name (integer) 0 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> set name gx OK 127.0.0.1:6379> type name #查看key的类型 string 127.0.0.1:6379>
String(字符串)
127.0.0.1:6379> set k1 v1 #设置值 OK 127.0.0.1:6379> get k1 #获取值 "v1" 127.0.0.1:6379> keys * #查看所有key 1) "k1" 127.0.0.1:6379> exists k1 #判断某个key是否存在 (integer) 1 127.0.0.1:6379> exists k2 (integer) 0 127.0.0.1:6379> append k1 " hello" #追加字符串 如果当前key不存在,则相当于 set key (integer) 8 127.0.0.1:6379> strlen k1 #获取字符串的长度 (integer) 8 127.0.0.1:6379> get k1 "v1 hello"
127.0.0.1:6379> set views 1 #设置初始值 OK 127.0.0.1:6379> get views #获取值 "1" 127.0.0.1:6379> incr views #自增1,如果key不存在,新建一个key (integer) 2 127.0.0.1:6379> get views "2" 127.0.0.1:6379> incrby views 5 #指定步长,设置增量 如果key不存在,则新建一个key (integer) 7 127.0.0.1:6379> get views "7" 127.0.0.1:6379> decr views #自减1 如果key不存在,新建一个key (integer) 6 127.0.0.1:6379> decrby views 3 #指定步长,设置减量,如果key不存在,则新建一个key (integer) 3 127.0.0.1:6379> get views "3"
127.0.0.1:6379> set k1 "hello welcome to china" #设置值 OK 127.0.0.1:6379> get k1 #获取值 "hello welcome to china" 127.0.0.1:6379> getrange k1 0 3 #截取字符串 [0,3] "hell" 127.0.0.1:6379> getrange k1 0 -1 #获取全部字符串 相当于 get key "hello welcome to china" 127.0.0.1:6379> setrange k1 0 nihao #替换指定位置的字符串 (integer) 22 127.0.0.1:6379> getrange k1 0 -1 "nihao welcome to china"
127.0.0.1:6379> setex name 10 tom #设置key 并设置失效时间 OK 127.0.0.1:6379> ttl name #查看key剩余的有效时间 (integer) 4 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> setnx name tom #如果key不存在,则创建key (integer) 1 127.0.0.1:6379> get name "tom" 127.0.0.1:6379> setnx name jerry #如果key存在,则创建key失败 (integer) 0 127.0.0.1:6379> get name "tom"
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 #设置多个值 OK 127.0.0.1:6379> mget k1 k2 v3 #获取多个值 如果key不存在,则返回nil 1) "v1" 2) "v2" 3) (nil) 127.0.0.1:6379> msetnx k1 kk1 k4 v4 #msetnx 是一个原子性的操作,要么一起成功,要么一起失败 (integer) 0 127.0.0.1:6379> get k4 (nil)
127.0.0.1:6379> clear #清空屏幕 127.0.0.1:6379> getset db redis #先获取值再设置值,如果key不存在,则返回nil (nil) 127.0.0.1:6379> getset db mysql #先获取值再设置值,如果key存在,则返回原来的值 "redis" 127.0.0.1:6379> get db "mysql"
127.0.0.1:6379> mset user:1:name tom user:1:age 20 #设置一个对象值 OK 127.0.0.1:6379> keys * 1) "user:1:age" 2) "user:1:name" 127.0.0.1:6379> mget user:1:name 1) "tom" 127.0.0.1:6379> mget user:1:age 1) "20" 127.0.0.1:6379> mget user:1:name user:1:age #获取一个对象值 1) "tom" 2) "20"
String类似的使用场景:value除了字符串还有数字
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储
posted on
浙公网安备 33010602011771号