redis概述、及常用指令

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

NoSQL数据库四大分类

键值对存储(key-value):Redis,Tyrant,

列存储:HBase,Riak,Cassandra

文档数据库:mongoDb,CouchDB

图形数据库:Neo4J,InfoGrid

性能:易扩展,大数据量,高可用

 

Redis:C语言开发的,高性能键值对数据库

支持类型:字符串,散列,列表,集合,有序集合

使用场景:缓存,任务队列(秒杀、抢购),网站访问统计、数据过期处理(精确到毫秒),分布式集群架构session分离

 

Key不要过长,不要过短,统一命名规范

数据类型

存储String(用的多) 容量最多512M 

set name chen

get name=”chen”

del name

incr num    数据库没有num时会自动设置为1 ,将指定的值增1,如果是其他类型会报错

decr num   递减

decr num2     -1

incrby  num3 5    =5  将指定的值增加指定的值

decrby  num3 4    =1

append num3 5   =15     在num3后面加上5数字

append num4  123   此时   key=num4   value=123

存储Hash(用的多)

赋值,取值,删除,增加数字,自学命令

hset  myhash username jack      树名,key,value

hset myhash2 age 20

hmset 设置多个键值对    

hmset myhash2 username rose age 21

hget 单个  hmget myhash username age

hgetall  myhash

hdel 树名 key

nil=null

hincrby myhash age 5   数值加5

hexists myhash user    1有这个key   0无这个key

hlen myhash  属性的个数

hkeys  myhash  得到所有key名称

hvals myhash 所有value

 

存储list常用命令:两端添加、查看列表、两端弹出、获取列表元素、扩展命令

r和l相反

lpush mylist  abc   返回3   依次从放入队列

 lpush mylist 123     

 rpush  从右边插入

 lrange mylist 0 -1   第一个到最后一个   -2为倒数第二个

 321cba

 lpop mylist 左侧3出队列

 rpop mylist 右侧a出队列

 llen   返回长度

 lpushx  mylist  a  在列表头部插入,若不存在会返回0 

  lrem mylist count数量  value

 lrem mylist 0 a   从头到尾删除队列里所有的a

 lrem mylist 2 a   从头到尾删除队列里2个a

 lset list 3  mmm   把下标(从0开始)为3的值改为mmm

 linsert list before b 11  在值为b的前面查入11,对应after

 rpoplpush list1 list2  将list1的队尾元素弹出压入list2队头

 此用于生产者消费者

 

存储Set

 和List不同的是,Set集合不允许出现重复的元素

常用命令:添加、删除,获取集合元素,集合交集,差集,并集,扩展命令

添加:sadd myset a b c  返回1  不能再接着添加重复元素

  sadd myset 1 2 3 继续添加

 srem myset 1 2   返回2,删除了2个元素

 smembers myset 查询

 sismember myset a  判断是否存在 返回1存在,0不存在

 运算   sadd myset1 a b c

   sadd myset2  a c 1 2

差集: sdiff myset1 myset2   返回b,与diff前后顺序有关,前面减后面剩下的

并集:  sunion myset1 myset2

交集: sinter myset1 myset2

获得set中成员的数量   scard myset1   返回3

随机返回集合的一个元素:srandmember myset1

将两个集合的差集存在新的集合  sdiffstore my myset1 myset2       12差集结果存到my中

  sinterstore    ,   sunionstore  一样

特殊场景:跟踪唯一性数据,用户维护数据对象之间的关联关系

订单ID买了相同产品相同的客户,求交集

 

 

存储Sorted-Set   有序的

游戏排名,微博热点话题

添加元素,获得,删除,范围查询,扩展命令

添加:  zadd mysort 70 张三 80 李四 90 王五     返回3:分数+元素

  zadd mysort 100 张三     返回0:因为已经有张三,但是张三的分数被替换了

 zscore mysort zs    查询zs的分数

 zcard mysort  返回元素个数

 zrem mysort zs ls  删除张三李四元素 ,返回剩余元素个数

 范围查找 zrange mysort 0 -1   只查询列出元素

   zrange mysort 0 -1 withscores 默认由小到大列出元素+分数

  zrevrange mysort mysort 0 -1 withscores  从大到小,0到-1级

  zremrangebyranke mysort 0 4   排序0到4级的删除

 zremrangebyscore mysort 80 100 分数80到100的删除

 zrangebyscore mysort 0 100 withscores     0-100分

扩展命令

 zincrby mysort 3 ls   给李四分数加3

 zount mysort 80 90  80到90分有多少人

使用场景:大型积分游戏排行榜,构建索引数据

 

通用指令:

 keys * 查询所有key

 key my*  所有以my开头

 key my?    my1  ,my2 ,my3

 del key

 rename keyName  keynewName重命名

 type keyname 查看类型

 expire keyname 1000 设置1000秒后key消失

 ttl keyname  查看key还有多少秒消失 ,如果没有设置返回-1

 

猜你喜欢

转载自blog.csdn.net/qq_40301202/article/details/91856512