首页   快速返回

redis使用简介     所属分类 redis
开源内存数据结构存储系统
可以作为数据库、缓存和消息中间件使用
支持多种类型的数据结构

支持 复制(replication),LUA脚本(Lua scripting),
LRU eviction,事务(transactions)和 不同级别的持久化(persistence)

通过 Redis 哨兵(Sentinel)和 Redis 集群(Cluster)实现 高可用性(high availability)


基本数据类型
字符串(string)
散列(hash)
列表(list)
集合(set)
有序集合(sorted set)
bitmaps
hyperloglogs
地理空间(geospatial)支持按半径索引查询


设置 string 类型的值可以覆盖任何其他类型

127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> sadd hello a
(integer) 1
127.0.0.1:6379> sadd hello b
(integer) 1
127.0.0.1:6379> sadd hello a
(integer) 0
127.0.0.1:6379> get hello
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> type hello
set
127.0.0.1:6379> smembers hello
1) "b"
2) "a"
127.0.0.1:6379> sadd hello c
(integer) 1
127.0.0.1:6379> smembers hello
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> set hello cat
OK
127.0.0.1:6379> type hello
string
127.0.0.1:6379> get hello
"cat"
127.0.0.1:6379> ttl hello
(integer) -1
127.0.0.1:6379> expire hello 7
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 4
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> set hello tiger
OK
127.0.0.1:6379> ttl hello
(integer) -1
127.0.0.1:6379> get hello
"tiger"
127.0.0.1:6379> 



incr 计数器自增

INCR key
如果 key 不存在, key 初始化为 0 再执行 INCR 操作
如果值包含错误的类型,或字符串类型的值不能表示为数字,返回错误。

127.0.0.1:6379> incr key
(integer) 1
127.0.0.1:6379> get key
"1"
127.0.0.1:6379> set key 7
OK
127.0.0.1:6379> incr key
(integer) 8
127.0.0.1:6379> get key
"8"
127.0.0.1:6379> set key abc
OK
127.0.0.1:6379> incr key
(error) ERR value is not an integer or out of range


有序集合

127.0.0.1:6379> zadd score  100 dog  
(integer) 1
127.0.0.1:6379> zadd score 90 cat
(integer) 1
127.0.0.1:6379> zadd score 95 tiger
(integer) 1

127.0.0.1:6379> zscore score dog
"100"
127.0.0.1:6379> zrank score tiger
(integer) 1
127.0.0.1:6379> zrank score dog
(integer) 2
127.0.0.1:6379> zrank score cat
(integer) 0

127.0.0.1:6379> zrange score 0 1
1) "cat"
2) "tiger"
127.0.0.1:6379> zrevrange score 0 100
1) "dog"
2) "tiger"
3) "cat"







使用场景
缓存
计数  页面访问计数 incr pageview
分布式锁
127.0.0.1:6379> set lockkey 1  nx
OK
127.0.0.1:6379> set lockkey 1  nx
(nil)

用户排队 
消息队列  生产者消费者
list    
push pop 
阻塞式访问 BRPOP 和 BLPOP

列表去重  set
标签 uv

排行榜 zset



使用注意点

key 设置合理的失效时间
string的过期时间在重新设值后会被覆盖
set 操作可以覆盖任何类型
使用合适的数据结构
不要用list存大量数据并检索
合理规划 key 的数量

业务数据隔离 方便数据清理

合理使用管道,lua 脚本和 redis 事务,提高性能 

禁用 keys * 操作,避免key太多卡死

keys *  列出所有key

上一篇     下一篇
aerospike网络及常用端口

如何做一个小公司的技术总监

LPR要点整理

redis基本操作

redis复杂嵌套数据结构处理

aerospike VS redis