一、简介
百度百科:
Redis是一个key-value存储系统(官网:http://redis.io),是一个分布式缓存数据库。
常用五种数据类型:
String、hash、list、set、sorted_set
二、Redis基本操作
默认为0号数据库,默认最多有15号数据库,切换数据库:select DBId
默认端口号:6379
默认登录命令:redis_cli
默认没有密码,如需要则开启redis.config的requirepass选项
有密码登录命令:redis-cli -p 6379 -a password
远程登录redis:redis-cli -h ip -p 6379 -a password
查看redis信息:info
退出redis:exit
关闭redis服务:shutdown
查看所有的key值:keys *
清空当前数据库数据:flushall
清空所有数据库数据:flushdb
控制key的有效时常:expire key seconds(秒)
控制key的有效时常:pexpire key milliseconds(毫秒)
查看key的剩余有效时常:ttl key(返回值为-2时表示key消失)
取消有效时长设设置:persist key
1.Redis---String
字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。
添加一个KV数据:set key value
根据K获取数据:get key
根据K对V自增操作:incr key(返回自增后的值,如果K不存在则会自动添加)
指定增长系数:incrby key 增长系数
根据K对V自减操作:dncr key(返回自减后的值,如果K不存在则会自动添加)
指定减少系数:decrby key 递减系数
向尾部追加值:append key value(K不存在则自动创建,返回的是追加后V的长度)
查看数据的长度:strlen key (键不存在或者值为空都会返回0)
判断K是否存在:exists key(存在返回1,不存在返回0)
同时设置多个键值:mset key value key value
同时获取多个键值:mget key1 key2
2.Redis---Hash
Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。
设置一个map集合:hset key 属性 值 ...
获取值:hget key 属性
设置一个map集合多个属性:hmset key 属性 值...
获取map里的多个属性值:hmget key 属性1 属性2...
查看这个map集合所有值:hgetall key
修改值:这里的修改值直接重新赋值就可以了
自增:hincrby key 属性值 自增量
自减:没有自减命令,可以通过自增-1来实现
查看属性是否存在:hexists key 属性(存在返回1,不存在返回0)
删除属性:hdel key 属性
只获map里的属性名:hkeys key
只获map里的属性值:hvals key
3.Redis---List
Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计。
在list头部添加元素:lpush key 元素...
查看list集合:lrange key 0 -1
在list尾部添加元素:rpush key 元素...
注意:注意要区分左插入还是右插入,最后查询的效果也不相同
删除list集合:del key
在特定位置之前插入元素:linsert key before 在什么元素之前 插入的元素
在特定位置之后插入元素:linsert key after 在什么元素之后 插入的元素
设置list中指定下标的元素值,一般用于修改:lset key 下标值 修改之后的数据(下标可为负)
删除指定与value相同的元素,当指定的个数大于0时从头到尾删除,小于0时从尾到头删除,等于0时删除所有重复元素:lrem key 指定删除个数 指定的value元素
保留指定key 的值范围内的数据:ltrim key 区间头 区间尾
从list的头部删除元素,并返回删除元素:lpop key 删除元素个数(不写默认为一个)
从list的尾部删除元素,并返回删除元素:rpop key 删除元素个数(不写默认为一个)
返回key对应list的长度:llen key
返回名称为key的list中index位置的元素:lindex key 位置下标
从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil :rpoplpush key1 key2
4.Redis---Set
Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
添加元素:sadd key 值 (添加成功返回1,失败返回0,不能添加重复数据)
获取内容:smembers key
移除并返回集合中的一个随机元素:spop key
获取set集合成员个数:scard key
移动一个元素到另外一个集合:smove 被移动元素的集合 目标元素集合 值
并集:sunion 集合一 集合二