使用docker来拉取redis
docker 常用命令
检 索 | docker search 搜索的关键字 docker search redis | docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉 取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列 表 | docker images | 查看所有本地镜像 |
删 除 | docker rmi image-id | 删除指定的本地镜像 |
使用docker拉取redis
docker pull redis
查看拉取的镜像,可以看到拉取的就是latest版本
docker images
启动redis
docker run -itd --name myredis -p 6379:6379 redis
注释:使用6379:6379 意思就是将docker的6379端口映射到我们服务器的6379端口,专业的说法就是将主机端口映射到docker容器的端口,这里的主机就是你安装docker的那台机器,myredis是给redis进程取别名,redis就是我们的镜像,直接写redis,表示默认启动latest版本,如果你拉取的不是latest版本,那么你需要这样
docker run -itd --name myredis -p 6379:6379 redis:TAG
TAG:代表你的版本号
使用检查docker容器是否启动redis
docker ps -a
如果对于docker容器简单命令可以看看菜鸟教程,我觉得挺好。
检查启动redis后,使用命令
docker exec -it redis /bin/bash
然后进入redis终端
redis-cli
如上图,这时我们就可以使用redis了
正式开始redis学习
首先了解redis的数据类型
String: 字符串,Hash: 散列,List: 列表,Set: 集合,Sorted Set: 有序集合。
对于string的操作
使用 set key value赋值
使用get key获取key值
使用getset key value 取值然后赋值
set key value
get key
getset key value
- 当value为整数数据时,可以使用以下命令操作数值的增减。
- 数值增减都是原子操作。
递增数字
语法:INCR key
指定数据增量
语法:INCRBY key 增量
递减
语法:decr key
减少指定的数
语法:decrby key 数值
仅当不存在的赋值
语法:setnx key value
注释:exists key1,判断key1是否讯在
setnx key1 1122 赋值
setnx key1 1133 重新赋值
后面获取后并没有改变值
追加
语法:append key value
APPEND命令,向键值的末尾追加value。如果键不存在则该键的值设置为value,即相当于set key value。返回值是追加后字符串的总长度
获取key值的长度
语法:strlen key
同时获取,设置多个值
mset key1 value1 key2 value2 ...
mget key1 key1...
删除key
语法 del key
hash散列
hash它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其他类型,如下图所示:
设置值 hset,获取值hget
HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0
#设置一个值
hset key field value
#给user的字段age设置一个值18
hset user age 18
#获取一个值
mget key field
#获取user 的age值
mget user age
#设置多个值
hmset key field1 value1 field2 value2
hmset user name lihua gender man
#获取多个值
hmget key field1 field2
hmget user name gender
#当字段不存在时
hsetnx key field value
#获取所有字段的值
hgetall key
#删除字段,可以删除多个
hdel key field field2
#增减数字
hincrby key field 具体数值
#判断字段是否存在,存在返回1,不存在返回0
exists key field
#获取字段名称
hkeys key
#只获取字段值
hvals key
#获取字段数量
hlen key
List类型
list分为两种,ArrayList和LinkedList
ArrayList:里面是数组,查询快,插入和删除慢(涉及到元素移位,连续的内存空间)
LinkedList:是双向链表,所以删除和插入快,不一定连续,查询慢
redis的list是LinkedList,所以添加元素可以从左边(LEFT)也可以是右边(Right),写英语主要是为了好记住命令。
#左边添加元素,list是一个集合,值可以是一个,或者多个
lpush key value,value2,value3
#右边添加元素
rpush key value1,value2
#查看列表,从startindex开始,到endindex结束,算头又算尾,可以是负数,-1 代表列表的最后一个元素
lrange key startindex endindex
#从左边弹出元素,弹出左边第一个
lpop key
#从右端弹出元素,单出右边第一个
rpop key
#求列表元素的个数
llen key
#删除列表中指定个数的值,count指定个数,value要删除的值,count>0,从左边开始,count<0 从右边开始,count=0,删除所有 value的值
LREM key count value
#获取指定索引元素的值
LINDEX key index
#设置指定元素的值
lset key index value
#向列表中插入元素,通过before|after来判断是将value插入到pivot的之前还是之后,pivot是元素
linsert key before|after pivot value
#在0之前插入11
linsert list1 before 0 11
#将元素从一个列表转移到另一个列表中,从src转到dest
rpoplpush src dest
set集合
set类型即集合类型,其中的数据时不重复且没有顺序
#添加/删除元素#
SADD key member member1
SREM key member member1
#获取集合中的所有元素
SMEMBERS key
#判断元素是否在集合中
SISMEMBER key member
#差集
#集合的差集运算 A-B
SDIFF key [key ...]
#集合的交集运算 A∩B
sinter key [key ...]
#集合的并集运算 A ∪ B
SUNION key [key ...]
#获取集合中的元素个数
scard key
#从集合中弹出一个元素
spop key
zset集合
zset属于SortedSet类型
在集合类型的基础上,有序集合为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在集合中,还能够获得最高或最低的前N个元素、获取指定分数范围内的元素等与分苏有关的操作。
在某些方面有序集合和列表类型有些相似。
- 二者都是有序的。
- 二者都可以获得某一范围的元素
但是二者有着很大的区别:
- 列表类型是通过链表实现的,后去靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。
- 有序集合类型使用散列实现,所有即使读取位于中间部分的数据也很快。
- 列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)。
- 有序集合要比列表类型更耗内存。
#添加元素
ZADD key score member [score member ...]
#获取排名在某个范围的元素列表,如果需要获取元素的分数的可以在命令尾部加上WITHSCORES参数
ZRANGE key start stop [WITHSCORES]
#获取元素的分数
ZSCORE key member
#删除元素
ZREM key member [member ...]
#获取指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
#增加某个元素的分数
ZINCRBY key increment member
# 获取集合中元素的数量
ZCARD key
#获得指定分数范围内的元素个数
ZCOUNT key min max
#按照排名范围删除元素
ZREMRANGEBYRANK key start stop
#获取元素的排名
#从小到大
ZRANK key member
#从大到小
ZREVRANK key member
常用:
keys
语法:keys pattern
del
语法:DEL key
exists
作用:确认一个key是否存在
语法:exists key
expire
设置自动销毁时间
rename
作用:重命名key
语法:rename oldkey newkey
type
作用:显示指定key的数据类型
语法:type key
文档参考出处:
https://www.cnblogs.com/chenyanbin/p/12073107.html#string%E7%B1%BB%E5%9E%8B