1.数据结构
1.1 字符串
可以是字符串,还有数字,二进制(图片 音频 视频),最大不能超过512MB。
命令:
- set:无论是否存在键值都设置成功。
- setnx:不存在键name时,返回1设置成功,存在失败返回0。可用分布式锁
- get:存在则返回value, 不存在返回nil
- mset:批量设值
- mget:批量得值
- incr: 必须为整数自加1,非整数返回错误,无键值从0自增返回1
- decr:和incr对应,减1
- incrby :指定整数增加多少
- decrby :和incrby 对应
- incrbyfloat:增加浮点哥
- append:追加字符串
1.2 HASH
string类型的field和value的映射表。
- hset :hset key field value
- hget :hget key field
- hdel :hdel key field
- hlen :hlen key
- hmset:hmset key field1 value1 field2 value2
- hmget:hmget key field1
- hexists:hexists key fled,指定filed是否存在
- hkeys :hkeys key 返回所有field
- hvals :hvals key返回所有的value
- hgetall :hgetall key返回所有的key value
1.3 列表list
存储多个有序的字符串,一个列表最多可存2的32次方减1个元素
- rpush:从右向左插入
- lpush :从左向右插入
- lrange :从左向右获取元素
- linsert before:在之前插入
- lpop :左边第一个元素删除
- rpop :右边第一个元素删除
1.4 集合SET
不允许有重复元素,且集合是无序。
- exists :查询key是否存在
- sadd :插入元素
- smember :获取元素
- srem :删除元素
- scard :计算元素个数
- sinter :求集合交集
1.5 有序集合
有序不能重复
- zadd key [#] score member [score member…]。添加元素,#可以为XX表示更新,不添加。NX表示只添加,不更新。CH表示此次操作后,有序结合元素和分数发生变化的个数。INCR表示增加。
- zrange:返回指定范围的值
- zrank :返回名次
- zrem :删除
- zinterstore destination numkeys key … [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] 表示有序集合交集。
destination:交集产生新的元素存储键名称, numkeys: 要做交集计算的键个数,key :元素键值,weights:每个被选中的键对应值乘weight, 默认为1。
2.命令
- keys * :查询所有key
- dbsize :键的个数
- exists :键是否存在
- del :删除key
- expire key seconds:键过期
- type key:键的类型
- SCAN命令用于迭代当前数据库中的数据库键。返回结果为:用于下一次迭代的新游标和所有被迭代的元素。和其类似的有,SSCAN 命令用于迭代集合键中的元素,• HSCAN 命令用于迭代哈希键中的键值对,ZSCAN 命令用于迭代有序集合中的元素。
3.数据库
redis有16个数据库,从0到15, select切换数据库。比如select 0。这个功能很少用,尤其在集群中,只用0数据库。因为:
- redis单线程,如果用多个库,这些库使用同一个CPU,彼此会有影响
- 多数据库,来回切换,调试与运维麻烦,若有一个慢查询,会影响其它库查询速度
flushdb和flushall区别:flushdb清空当前数据库,flushall清空所有数据库。