一.String类型
常用命令
set <键> <值>
NX:当数据库中key不存在时,可以将key-value添加数据库
XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
EX:key的超时秒数
PX:key的超时毫秒数
设值 取值
setex <key><过期时间><value>#设置键值的同时,设置过期时间,单位秒。
setex key 80 val
set ssn us ex 80
setnx key value 不存在就插入(not exists)
set key val nx
--取值
get <key>查询对应键值
示例: get key
getset <key><value> 以新换旧,设置了新值同时获得旧值。
示例:get key key_new
批量操作:
mset key1 key2 批量设置key
mget key1 key2 批量获取
msetnx <key1><value1><key2><value2> ..... 同时设置一个或多个 键值对时所有的key都要不存在,如果有一个存在就都失败
递增递减
incr <key>
将 key 中储存的数字值增1
只能对数字值操作,如果为空,新增值为1
decr <key>
将 key 中储存的数字值减1
只能对数字值操作,如果为空,新增值为-1
incrby / decrby <key><步长>将 key 中储存的数字值增减。自定义步长。
二,list类型
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
1.从左边/右边插入一个或多个值。
lpush/rpush <key><value1><value2><value3> ....
2.取值:按照索引下标获得元素(从左到右)
lrange <key><start><stop>
0左边第一个,-1右边第一个,(0 -1表示获取所有)
3.从左边/右边吐出一个值。值在键在,值光键亡。
lpop/rpop <key>
4.从<key1>列表右边吐出一个值,插到<key2>列表左边。
rpoplpush <key1><key2>
5.按照索引下标获得元素(从左到右)
lindex <key><index>
6.获得列表长度
llen <key
7.从左边删除n个对应的value值(从左到右)
lrem <key><n><value>
aaa里面有1 2 4 删除了一个2也可删除n 个只要你里面有
8.将列表key下标为index的值替换成value
lset<key><index><value>
三.hash类型
hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>
用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储
通过第三种方式:( key(用户ID) + field(属性标签)) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题
1.给<key>集合中的<field>键赋值<value>
hset <key><field><value>
2.从<key1>集合<field>取出 value
hget <key1><field>
3.批量设置hash的值
hmset <key1><field1><value1><field2><value2>...
4.查看哈希表 key 中,给定域 field 是否存在。
hexists<key1><field>
5.<key>列出该hash集合的所有field
hkeys <key>
6.<key>列出该hash集合的所有value
hvals <key>
7.为哈希表 key 中的域 field 的值加上增量 1 -1
hincrby <key><field><increment>
8.将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
hsetnx <key><field><value>
四.set类型
set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
1.将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
sadd <key><value1><value2> .....
2.取出该集合的所有值。
smembers <key>
3.判断集合<key>是否为含有该<value>值,有1,没有0
sismember <key><value>
4.返回该集合的元素个数。
scard <key>
5.删除集合中的某个元素。
srem <key><value1><value2> ....
6.随机从该集合中吐出count个值。会从集合中删除数据
spop <key> <count>
7.随机从该集合中取出n个值。不会从集合中删除 。
srandmember <key> <n>
8.把集合中一个值从一个集合移动到另一个集合
smove <source><destination>value
9.返回两个集合的交集元素。
sinter <key1><key2>
10.返回两个集合的并集元素。
sunion <key1><key2>
11.返回两个集合的差集元素(key1中的,不包含key2中的)
sdiff <key1><key2>
五.zset类型(Sorted set)
Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。
1.赋值:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zadd <key><score1><value1><score2><value2>…
2.取值:返回有序集 key 中,下标在<start><stop>之间的元素
带WITHSCORES,可以让分数一起和值返回到结果集。
zrange <key><start><stop> [WITHSCORES]
3.返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
zrangebyscore key min max [withscores] [limit offset count]
4.同上,改为从大到小排列。
zrevrangebyscore key max min [withscores] [limit offset count]
5.删除该集合下,指定值的元素
zrem <key><value>
6.统计该集合,分数区间内的元素个数
zcount <key><min><max>
7.返回该值在集合中的排名,从0开始。
zrank <key><value>