五大类型
三大的特殊类型
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理(发布订阅的)。它支持字符串、哈希表、列表、集合、有序集合,和范围查询:如位图,hyperloglogs等数据类型。内置 主从复制、Lua脚本(Lua scripting)、LRU(驱动)收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel(哨兵)提供高可用,通过Redis Cluster提供自动分区。
Redis-Key
keys *
set name zhanghonggang
EXISTS name 判断当前key是否存在
EXPIRE name 10 // 设置有效期10s
ttl name // 查询其有效期 到期即被删除
type name //string
type age // string 查看key的类型
127.0.0.1:6379> set key name
OK
127.0.0.1:6379> keys *
1) "key"
2) "age"
127.0.0.1:6379> age插入 APPEND STRLEN EXISTS *******************************
(error) ERR unknown command 'age'
127.0.0.1:6379> key(age)
(error) ERR unknown command 'key(age)
127.0.0.1:6379> EXISTS key1 // 是否存在
(integer) 0
127.0.0.1:6379> EXISTS key
(integer) 1
127.0.0.1:6379> APPEND key "is xiaoan // 插入valus 的值
(integer) 14
127.0.0.1:6379> get key
"nameis xiaoang"
127.0.0.1:6379> STRLEN key // 查看长度
(integer) 14
127.0.0.1:6379> APPEND key " and zhaangxiaoyu”
(integer) 31
127.0.0.1:6379> get key
"nameis xiaoang and zhangxiaoyu"增减 decr incr DECRBY INCRBY **********************************************
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379> INCRBY views 10
(integer) 9
127.0.0.1:6379> INCRBY views 10
(integer) 19
127.0.0.1:6379> DECRBY views 5
(integer) 14
127.0.0.1:6379> DECRBY views 5range 范围 GETRAGNE 截取*********************************************************
127.0.0.1:6379> keys *
1) "views"
2) "key"
3) "age"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 "zhanghongga
OK
127.0.0.1:6379> get key1
"zhanghonggang"
127.0.0.1:6379> GETRANGE key1 0 3
"zhan"
127.0.0.1:6379> GETRANGE key1 0 -1
"zhanghonggang"
127.0.0.1:6379> GETRANGE key1 0 -1替换 SETRANGE ******************************************
127.0.0.1:6379> set key2 zhangyue
OK
127.0.0.1:6379> get key2
"zhangyue"
127.0.0.1:6379> SETRANGE key2 1 love
(integer) 8
127.0.0.1:6379> get key2
"zloveyue"
127.0.0.1:6379> SETRANGE key2 1 Ilove
(integer) 8
127.0.0.1:6379> SETRANGE key2 1 Ilove
(integer) 8
127.0.0.1:6379> get key2
"zIloveue"
127.0.0.1:6379> SETRANGE key2 00 Ilove
(integer) 8
127.0.0.1:6379> SETRANGE key2 00 Ilove
(integer) 8
127.0.0.1:6379> get key2
"Iloveeue"
127.0.0.1:6379> SETRANGE key2 5 y
(integer) 8
127.0.0.1:6379> get key2
"Iloveyue"
127.0.0.1:6379> SETRANGE key2 00 Ilove**************************************************************************
setex(set with expire) 设置过期时间
setnx (set if not exist) 不存在设置
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> setex key3 30 "hello" // 设置key3 = hello 30s后过期
OK
127.0.0.1:6379> ttl key3
(integer) 21
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> setnx mykey "redis" // 如果mykey 不存在 则创建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
127.0.0.1:6379> ttl key3
(integer) -2
127.0.0.1:6379> setnx mykey "Mongodb" // 若果mykes 存在 则创建失败
(integer) 0
127.0.0.1:6379> get mykey
"redis"
**************************************************************************mset
mget
127.0.0.1:6379> msetnx k1 v1 k4 v4
(integer) 0
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> git k4
(error) ERR unknown command 'git'
127.0.0.1:6379> get k4
(nil)
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 24key 的设计: user :{id}:{filed} (对象 id 属性)
set article:10000:views (当前第一万篇文字的浏览量)
*********
127.0.0.1:6379> getset db redis // 若不存在 则返回nil
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db Mongodb // 若存在 则获取原来的值 并设置新值
"redis"
127.0.0.1:6379> get db
"Mongodb"
********************************************string 场景: value 可以是 string 数字
计数器
统计多单位的数量 uid(当前用户 的id) eg: uid :9854545:follow 0 incr // 若有人关注 就自增
粉丝数
对象缓存存储