Redis
启动命令:redis-server.exe redis.windows.conf
停止命令:redis-server.exe --service-stop
noSql的数据结构,key-value形式存储数据。常用作缓存,分布式锁·····
Redis里所有的key都是字符串(Java中操作的对象,序列化后保存在Redis中也是字符串)。
但不同的key对应的value则具备不同的数据结构。主要五种数据结构如下:
1.String
Rides中的字符串,都是动态字符串,内部是可以修改的,像Java中的StringBuffer,采用分配冗余空间的方式,来减少内存的频繁分配。(实际分配的内存大于需要的内存,当字符串小于1M,扩容在现有的空间基础上加倍,每次扩容1M,最大512M)
- append
使用append命令,如果key已经存在,则在value后追加值,否则创建新的键值对。 - set
set命令给一个key进行赋值操作 - decr
可以对value值进行减1操作(前提是value为数字),如果不是数字则会报错,如果value不存在,则会在默认值(0)的基础上减1 - decrby
和decr类似,但可以自己设置步长,decr步长默认1 - get
用来获取一个key的value - getrange
可以返回一个key的value的子串,类似Java中的substring。end 参数 -1表示最后一个字符串,以此类推 - getset
获取并更新某一个key - incr
给某一个key自增(+1) - incrby
给某一个key自增,可以设置步长 - incrbyfloat
和incrby类似,但自增的步长可以指定浮点数 - mget和mset
批量获取和存储 - setex
给key设置value,同时可以设置过期时间 (时间单位为秒) - ttl
查看key的有效期 - psetex
和setex类似,时间单位换为毫秒 - setnx
默认情况下,set命令会覆盖已经存在的key,但setnx不会(如果key已经存在就不会修改) - msetnx
批量设置(有一个存在,则都会失败) - setrange
修改一个key的value值(部分修改),第一个参数为偏移量(0表示从第0个字符开始修改),超过长度用0补齐长度在追加 - strlen
查看字符串长度
1.1BIT 命令
在Redis中,字符串以二进制形式存储。例如 set k1 a,a对应的ASCII码是97,97转为二进制是01100001,BIT的相关命令就是对二进制进行操作
- getbit
返回key在offset处对应的value的值(对应a而言,0为就是0、1位就是1) - setbit
修改key在offset处对应的value的值
-bitcount
统计二进制数据中 1 的个数
2.List
- lpush
lpush表示将value的值从左到右依次插入表头(类似于栈,先进先出,先进的反而在表尾) - lrange
返回列表指定区间内的元素 - rpush
和lpush类似,rpush从右往左 - rpop
移除并返回列表的尾元素 - lpop
移除并返回列表的头元素 - lindex
返回列表中,小标为index的元素 - ltrim
对一个列表进行修剪,只保留区间内的元素 - blpop
阻塞式的弹出,相当于lpop的阻塞版。当没有元素,会在过期时间内阻塞,只到里面有元素或者过期。
3.Set(元素不能重复)
- sadd
添加一个元素到key中 - smembers
获取一个key下的所有元素 - srem
移除key集合中指定的元素 - sismember
返回一个成员是否在集合中 - scard
返回集合的数量 - srandmember
随机返回一个key里的元素 - spop
随机返回并且出栈一个元素 - smove
把一个元素从一个集合移动到另一个集合中去 - sdiff
返回两个集合的差集,以前一个集合为准除去第二个集合。 - sinter
返回两个集合的交集。 - sdiffstore
和sdiff类似,不同的是计算出来的结果会保存在新的集合里 - sinterstore
和sinter类似,将结果保存到新集合里。(k3 k1 k2)将结果保存到k3 - sunion
求并集 - sunionstore
求并集并且保存到新集合
4.Hash
hash结构里,key是一个字符串,value则是一个key/value形式的键值对
- hset
添加值 - hget
获取值 - hmset
批量添加 - hmget
批量获取 - hdel
删除一个指定的field(删除的是键值对) - hsetnx
默认情况下,如果field已经存在,hset会覆盖值,但hsetnx不会。 - hvals
获取所有的value - hkeys
获取所有的key - hgetall
同时获取所有key和value - hexists
返回hash里的field是否存在 - hincrby
给指定的 value 自增 - hincrbyfloat
可以自增浮点数 - hlen
返回 某一个key中value的数量 - hstrlen
返回key中某一个field的字符串长度
5.Zset
- zadd
将指定元素添加进有序集合中 - zscore
返回member的score值 - zrange
返回集合中的一组元素 - zrevrange
返回集合中的一组元素倒序 - zcard
返回元素的个数 - zcount
返回score在某一个区间的个数 - zrangebyscore
按照score的范围返回元素 - zrank(从小到大)
返回元素的排名 - zrevrank(大到小)
返回元素排名 - zincrby
score 自增 - zinterscore
求两个集合交集,并保存到新集合里。(set里的key相同的value会求和) - zrem
弹出一个元素 - zlexcount
计算有序集合中成员的数量 - zrangelex
返回指定区间内的成员
6.key
- del
删除一个key/value - dump
序列化给定的key - exists
判断一个key是否存在 - ttl
查看一个key的有效期(-1永不过期) - expire
给一个key设置有效期,如果key在过期前被重写set,则过期时间失效 - persist
移除一个key 的过期时间 - keys*
查看所有的key(为统配符,列入可以k ) - ptt
和ttl相同,返回时间单位为毫秒
7.补充
- 四种数据类型(不包含string),在使用时,如果容器不存在,则会自动创建容器
- 四种数据类型,如果容器里面没元素,则会删除容器,释放内存