个人Redis默认port 6379
PID: 9251
1.Redis特点:专有的内存,不共享。
持久化。
2.用途:作为DB,Cache,Queue三种用途。
3.从主流的说话上,Redis是单线程模型,但是不能说Redis完全是单线程模型的,Memcache是多线程模型的
4.系统级命令,不属于那个数据结构:
4.1 keys:用于模式匹配
keys pattern(* ? \e(这个代表匹配e) [abc](abc之间任意一个)等等)
4.2 exists key:判断指定的key是否存在
4.3 del:可以删除1个或多个键
4.4 type:返回键类型
4.5 randomkey:随机返回一个key
4.6 expire :如果你要做缓存,你一定要有一个过期时间
expire key seconds
为给定的key设置过期时间
expire nbme 6
(integer) 1
get nbme
"jack"
get nbme
(nil)
4.7pexpire key 毫秒 作用与4.6相同
4.8expireat key timestamp(毫秒)某个具体时间过期
4.9pexpireat key timestamp(微秒)
4.10ttl: 返回我的key的生存时间(秒为单位)
4.11pttl :上同,单位是毫秒。
4.12sort:排序
4.13select 数字 切换数据库 redis里面有16个数据库
5.String类型:
5.1数据最大容量是512MB
5.2赋值与取值:set/get
5.3incr key 递增(i++,++i) decr key递减
5.4incrby key increment 增加指定的整数
Decrby key decrement 减少指定的整数
5.5incrbyfloat 增加指定的浮点数
5.6append key value 向尾部追加值
5.7strlen key 获取字符串的长度
5.8mget mset 一次获得多个值或者设置多个值 减少带宽
mget msg name
1) "helloworld nihao"
2) "11"
5.9setrange
getrange
GETRANGEmsg 6 10
SETRANGE msg 6 hahahaahaha
(integer) 17
get msg
"hellowhahahaahaha"
5.10setex key second value 赋值并加上过期时间
5.11getbit key offset获取二进制中offset这个位置的”0,1”状态
Setbit key offset value 设置二进制中offset这个位置的”0,1”状态
bicount key 获取二进制中1的个数
Bitop operation 二进制位的操作(^ & |)
bit的妙用,可以统计上线天数(类似的问题),setbit xxx 100 1
最后再用bitcount xxx就可以获得上线天数
6.哈希在dictionary中的存储
Dictionary key: string类型 value=> dictionary
1. hset key field value (key是redis中的key,field是map中的key)
2. hget key field
3. hmset key field value field value ->减轻网路带宽[高性能]
4. hmget
5. hgetall 遍历字典中的所有key/value
6. hexists 判断字典中的key是否存在
7. hsetnx nx = not exists 当字段不存在的时候赋值(原子性)
8. hincrby key field increment 增加
9. Hdel key field
10. hkeys key
hvals key
11. hlen key
hash的优点:查找o(1)非常适合于定值查找
7.列表类型:
1.lpush key value 链表左端插入值
2.rpush key value 链表右端插入值
3.llen key 获取列表中元素的个数
4.lpop key
5.rpop key
6.lrange key start stop 获取列表片段 O(n)
7.lrem key count value
8.lrem key count value 当count>0从列表左边开始删前n个值为value的元素 当count<0从列表右边开始删前n个值为value的元素
当count=0 删除所有值为value的元素
9.lindex key index 获得指定索引的元素值
10.lset key index value 设置指定索引的元素值
11.ltrim key start end可以删除指定索引范围之外的所有元素
12.linsert key before|after xxx value
13.rpoplpush 原列表 目标列表 使一个元素从原列表转移到目标列表 用来做数据迁移
8.集合类型:
8.1 sadd key member 添加元素到集合中
8.2 srem key member 删除集合中的元素
8.3 smembers key 显示集合所有元素
8.4sismember key member 判断元素是否在集合中
8.5集合间的运算:
sdiff key ... 差集
sinter key... 交集
sunion key... 并集
scard 获取集合中的元素个数
sdiffstore 目标集合 key...
sinterstore 目标集合 key...
sunionstore 目标集合 key...
8.6srandmember key [count] 随机获得集合中的元素
8.7spop key 从集合中弹出一个元素
9.有序集合类型(SortedSet):
9.1SortedSet(SkipList) 用链表的玩法来做到CURD logN的复杂度
zadd key score(用来排序) member
9.2zscore key member 获取member的分数
9.3zrange key start stop [withscores] start stop 是索引
Zrevrange key start stop [withscores] 倒序
9.4zrangebyscore key min max [withscores] limit offset count min和max是分数
zrevrangebyscore key max min [withscores] limit offset count
获取最热门的top10的文章
Zrevrangebyscore articles 无限 0 limit 0 10
10.事务
multi 事务开始
exec 事务执行
watch watch命令可以监控一个或者多个键,一旦其中有一个键被修改,之后的事务就不会执行。
11.订阅与发布功能
subscribe channel
public channel message
psubscribe pattern 订阅一个或多个符合模式的频道
比如psubscribe channel.*
11.redis中的两种序列化方式:
RDB [快照]