Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(sorted set : 有序集合)
String (字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
string类型是redis最积分的数据类型,一个键最大能存储512MB。
redis 数据备份与恢复
redis save命令用于创建
redis-cli
incr bar 1
支持单次增加多个
incrby bar 2
decr bar
decrby bar 2
3、增加指定浮点数
incrbyfloat bar 2.7
incrbyfloat bar 5E+4
4、向尾部追加
set bar hallo
APPEND bar "warld!"
5、获取字符串长度
strlen key
6、同时获得/设置多个键值
MGET key [key value....]
MGETkey key1 v1 key2 v2 key3 v3
MGET key1 key3
7、位操作
GETBIT key offset
SETBIT key offset value
BIGCOUNT key [start][end]
BITCOUNT key[start] [end]
BITOP operation destkey key [key...]
散列数据
1、赋值与取值
HSET key field value
HGET key field
HMSET key field value [field value ...]
HMGET key field [field]
HGETALL key
2、判断字段是否存在
HEXISTS key field
3、当字段不存在时赋值
HSETNX key field value
4、增加数字
HINCRBY key field increment
5、删除字段
HDEL key field [field]
1、只获取字段名或字段值
HKEYS key
HVALS key
2、获取字段数量
HLEN key
列表类型
列表类型list可以存储一个有序的字符串列表,常用的操作时向列表两端添加元素,或者获取列表的某一个片段。
列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。
命令
LPUSH key value[value...]
RPUSH key value[value...]
进阶
MULTI 之后的命令属于同一事务,先不要执行,暂时存起来。
QUEUED 标识命令已经进入等待执行的事务队列中。
EXEC 将等待的执行的事务队列中的所有命令按照发送顺序一次进行执行。
WATCH 命令介绍
可以监控一个或多个件一旦其中一个键被修改或删除之后的事务就不会执行,监控一直持续到Exec命令。
Exec 命令后会取消所有键的监控。如果不想执行事务中的命令也可以使用UNWATCH 命令来取消监控。
过期时间
命令介绍
EXPIRE 命令的使用方法 Expire key seconds 其中seconds参数表示键的过期时间。单位是秒
TTL命令 返回值是键的剩余时间 注意不存在和 过期时间不存在的情况
PERSIST命令 取消键的过期时间设置(将键恢复成永久的)。如果过期时间被成功清除则返回1;
否返回0(因为键不存在或键本来就是永久的)
通过GET GETSET 命令为键赋值也会同时清除键的过期时间。
EXPIRE命令的seconds参数必须是整数,所以最小单位是1秒。如果想要更精确的控制键
的过期时间应该使用 PEXPIRE命令,PEXPIRE命令与 EXPIRE的唯一区别是前者的时间单
位是毫秒,即 PEXPIRE key 1000 与 EXPIRE key 1 等价,对应地可以用 PTTL命令以毫秒为
单位返回键的剩余时间。
如果使用 WATCH命令监测了一个拥有过期时间的键,该键时间到期自动删除并不
会被WATCH命令认为该键被改变。
另外还有两个相对不太常用的命令:EXPIREAT和PEXPIREAT。
EXPIREAT命令与EXPIRE命令的差别在于前者使用Unix时间作为第二个参数表示键的
过期时刻。PEXPIREAT命令与EXPIREAT命令的区别是前者的时间单位是毫秒
实现访问频率限制可以使用Expire 命令设置过期时间
修改配置文件maxmemory参数 设置redis最大可用内存大小
maxmemory-policy 参数指定的策略来删除不要需要的键直到redis占用的内存小于指定内存。
LRU (Least Recently Used ) 算法 来处理最近最少使用。其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间时这些键是可以被删除的。
volatile-lru 使用LRU算法删除一个键(只对设置了过期时间的键)
allkey-lru 使用lru算法删除一个键
volatile-random 随机删除一个键(只对设置了过期时间的键)
allkey-random 随机删除一个键
volatile-ttl 删除过期时间最近的一个键
noeviction 不删除键,只返回错误
如当maxmemory-policy设置为allkeys-lru时,一旦Redis占用的内存超过了限制值,
Redis会不断地删除数据库中最近最少使用的键 [2] ,直到占用的内存小于限制值。
排序
SORT命令
有序集合的集合操作
STORE