Redis数据类型、两种模型、事务、内部命令
1.redis数据类型
a.字符串,使用场景:常规key-value缓存应用
set name lixiang get name append name 123 # 字符串追加 mset key value [key value ...] # 设置多个键值对 mset name1 zhangsan name2 lisi mget name1 name2 # 获取多个键的值 strlen name1 # 返回字符串长度 (integer) 8 set age 24 incr age # 每次加1 (integer) 25 decr age # 每次减1 exists key [key ...] # 检测某个键是否存在 incrby age 20 # 指定增加量 del name1 # 删除某个键
b.hash,使用场景:存储部分变更的数据,如用户信息等
hash是一个string类型的field和value的映射表,hash特别适合用于存储对象 hset user1 name "Tom" hset user1 age 25 hset user1 career "Programmer" hget user1 name hgetall user1 # 返回key的所有键值 hdel user1 name # 删除其中某个字段 hdelall user1 # 删除user1
c.list,Redis列表是简单的字符串列表
lpush list1 bmw benz toyota wuling # 将一个或多个值插入到列表头部 lrange list1 0 3 # 返回指定的元素 rpush list1 biyadi # 将一个或多个值插入到列表尾部 rpop list1 # 删除列表末尾的元素 llen list1 # 返回列表长度 lrem list1 2 baozi1 # 删除前两个baozi1 lrem list1 -1 baozi1 # 删除最后一个baozi1 lrem list1 0 baozi1 # 删除所有baozi1 lindex list1 2 # lindex key index返回下标为index的元素 lset list1 2 TOYOTA # lset key index value linsert list1 before benz dazhong # linsert key BEFORE|AFTER pivot value
生产者、消费者模型--用rpush生产,放到列表尾部,用lpop消费,从列表头部取出元素,跟队列是一样的,先进先出;栈:后进先出(电梯)、先进后出.
d.set
set是string类型的无序集合.注意集合和列表的区别: 集合中的元素是无序的,因此不能通过索引来操作元素; 集合中的元素不能有重复. SADD numbers 1 3 5 # sadd key member [ member .... ] smembers numbers # smembers key返回集合中的所有元素 srem numbers 5 # srem key member sismember key member# 判断元素是否在集合中 scard key # 获得集合中元素的个数
e.sorted set有序集合对象
zadd 命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在,则会用新的分数替换原有的分数
zadd key score member [ score member ...... ] ZADD price 8.5 apple 5.0 banana 6.0 cherry zscore key member # 获得元素的分数 zrange key start stop [ withscores ] # 获得排名在某个范围的元素列表 zrevrange key start stop [ withscores ] zrange price 0 -1
2.两种模型
a.生产者、消费者模型 b.发布订阅模型 # 两个不同的终端,分别连上redis 10.0.0.15:6379> publish mq1 "redis is a great cached technique" (integer) 1 10.0.0.15:6379> subscribe mq1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mq1" 3) (integer) 1 1) "message" 2) "mq1" 3) "redis is a great cached technique"
3.事务
10.0.0.15:6379> zadd money 3000 lixiang 6000 oldboy (integer) 2 10.0.0.15:6379> multi OK 10.0.0.15:6379> zincrby money 1000 lixiang QUEUED 10.0.0.15:6379> zincrby money -1000 oldboy QUEUED 10.0.0.15:6379> exec 1) "4000" 2) "5000" 10.0.0.15:6379> zrange money 0 -1 withscores multi:标记一个事务块的开始; exec:执行所有事务块内的命令; discard:取消事务,放弃执行事务块内的所有命令; watch:监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断; unwatch:取消watch命令对所有 key 的监视. Redis的事务中,启用的是乐观锁,只负责监测key没有被改动.
4.内部命令
INFO [section]:获取Redis服务器的各种信息和统计数值; CONFIG SET parameter value:修改redis配置参数,无需重启; MONITOR:实时打印出Redis服务器接收到的命令,调试用; DBSIZE:返回当前数据库的key的数量; FLUSHALL:删除所有数据库的所有key; FLUSHDB:删除当前数据库的所有key; CLUSTER SLOTS:获取集群节点的映射数组; CLIENT LIST:获取连接到服务器的客户端连接列表; ROLE:返回主从实例所属的角色; SAVE:异步保存数据到硬盘; SHUTDOWN [NOSAVE] [SAVE]:异步保存数据到硬盘,并关闭服务器; SLAVEOF host port:将当前服务器转变为指定服务器的从属服务器(slave server); SYNC:用于复制功能(replication)的内部命令 SLOWLOG subcommand [argument]:管理 redis 的慢日志 cat redis.conf slowlog-log-slower-than 10000 slowlog-max-len 128
Redis常用命令整理:https://www.cnblogs.com/kevinws/p/6281395.html