目录
Redis缓存入门
Redis初始操作
启动redis服务
Docker 环境下的启动(docker环境启动多个需要运行多个容器):
docker start redis01 #底层也是通过redis-server启动,start单词后的redis01为容器名
docker 中查看redis 服务:docker ps
查看启动的redis进程信息
ps -ef|grep redis
root 3511 1 0 16:29 ? 00:00:01 redis-server *:6379
root 3515 1 0 16:29 ? 00:00:01 redis-server 127.0.0.1:6380
进入redis容器:docker exec -it redis01 bash #redis01 为容器名
登陆本地redis:
redis-cli
或者
redis-cli -p 6379
或者
redis-cli -p 6379 -a password #-a后面为password,此操作需要开启redis.conf文件中的 requirepass选项
登陆远程redis:redis-cli -h ip -p 6379 -a password
查看redis信息:登陆redis,然后输入info指令
关闭redis服务:shutdown
基于查看redis中的key:keys *
基于key/value形式存储数据:set a 100
基于key获取redis中存储的数据:get a
清除当前数据库数据:flushdb
清除所有数据库数据:flushall
Key有效时长设置:EXPIRE key seconds(单位秒) 例如:expire a 10
取消有效时长设置:PERSIST key 例如:persist a
重新设置有效时长:PEXPIRE key milliseconds(单位毫秒) 例如:pexpire a 10000
Redis常用数据类型
String类型
字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。
赋值/取值:set/get
当存储的字符串是整数时,让当前键值递增:incr 例如:incr a
指定增长系数:incrby 例如:incrby a 2
让当前键值递减:decr
指定递减系数:decrby
向尾部追加值:append 例如:append key 添加内容
获取字符串长度:strlen 例如:strlen key
同时设置/获取多个键值:mset/mget 例如:mset x 100 y 100 mget x y
Hash类型
Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。
赋值/取值:hset/hget 例如:hset key filed 值 hget key field
获取对象的全部属性和值:hgetall 例如:hgetall key
hset命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。
让当前键值指定增长:hincrby 例如:hincrby key field 2
设置/获取对象的多个属性:hmset/hmget 例如:hmget key field field...
判断属性是否存在:hexists 例如:hexists key field
删除属性:hdel 例如:hdel key field
获取所有的key/value:hkeys/hvals 例如:hkeys key hvals key
List类型
Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计。
在key对应list的头部添加字符串元素:lpush 例如:lpush key 元素1 元素2 ...
查询指定区间内的元素:lrange 例如:lrange key 0 -1
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
在key对应list的尾部添加字符串元素:rpush 例如:rpush key 元素1 元素2 ...
清空集合元素:del 例如:del key
在key对应list的特定位置之前或之后添加字符串元素:linsert
例如:linsert key before 元素 插入的元素
设置list中指定下标的元素值(一般用于修改操作):lset
例如:lset key 下标 新元素
从key对应list中删除count个和value相同的元素,count>0时,按从头到尾的顺序删除:lrem
例如:lrem key 数量 元素
保留指定key 的值范围内的数据:ltrim
例如:ltrim key 开始下标 结束下标
从list的头部删除元素,并返回删除元素:lpop
例如:lpop key 数量
从list的尾部删除元素,并返回删除元素(非阻塞式):rpop
例如:rpop key 数量
从list的尾部删除元素,并返回删除元素(阻塞式):brpop
例如:brpop key 时长(秒) 当list中没有元素时,会等待设置的时长
返回key对应list的长度:llen 例如:llen key
返回名称为key的list中index位置的元素:lindex 例如:lindex key 下标
从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil:
例如:rpoplpush key key
Set类型
Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
添加元素,重复元素添加失败,返回0:sadd 例如:sadd key 元素1 元素2 ...
获取集合中成员:smembers 例如:smembers key
移除并返回集合中的一个随机元素:spop 例如:spop key 数量
获取集合中的成员个数:scard 例如:scard key
移动一个元素到另外一个集合:smove 例如:smove key1 key2 元素
实现集合的并集操作:sunion 例如:sunion key1 key2
移除元素:srem 例如:srem key 元素