redis需要linux环境来进行搭建,windows需要到github上面下载,学习需要还是选择linux环境,直接阿里云购买了一个云服务器38/年
环境选择centos8
xshell远程连接
使用winscp进行上传redis压缩包
解压 make命令解析,make install 把将/usr/local/redis-4.0.6/src目录下的文件加到/usr/local/bin目录下
redis启动方式1前台启动
直接在bin目录下输入redis-server启动,缺点,无法关闭该窗口,该窗口也无法进行其他操作
ctrl+c退出redis
第二种,后台启动,先复制一份redis.conf 到任意目录,这里选择etc目录
vi redis.conf 进行编辑
esc / 输入要搜索的内容可以在文本里面搜索内容
通过棍子命令可以查看到redis已经运行
[root@iZwz967k5csyfzgiwh8pu2Z bin]# redis-server /etc/redis.conf
[root@iZwz967k5csyfzgiwh8pu2Z bin]# ps -ef |grep redis
root 5696 1 0 16:16 ? 00:00:00 redis-server 127.0.0.1:6379
root 5702 1151 0 16:17 pts/0 00:00:00 grep --color=auto redis
[root@iZwz967k5csyfzgiwh8pu2Z bin]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
通过redis-cli进入redis客户端 ping pong 表示正常联通
关闭两种方法1shutwodn 2 kill -9
[root@iZwz967k5csyfzgiwh8pu2Z bin]# redis-cli
127.0.0.1:6379> shutdown
not connected>
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379>
2.2 数据类型
2.2.1 key值键位
key值的操作:
keys * 查看当前库所有key
set key value 设置key值与value
exists key 判断key是否存在
type key 查看key是什么类型
del key 删除指定的key数据
unlink key 根据value选择非阻塞删除
——仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。
expire key 10 10秒钟:为给定的key设置过期时间
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
库的选择:
select 命令切换数据库
dbsize 查看当前数据库的key数量
flushdb 清空当前库
flushall 通杀全部库
2.2.2 string字符串
一个key对应一个value
二进制安全的,即可包含任何数据
value最多可以是512m
参数设置:
set key value 设置key值
get key 查询key值
append key value 将给定的value追加到原值末尾
strlen key 获取值的长度
setnx key value 只有在key不存在的时候,设置key值
incr key 将key值存储的数字增1,只对数字值操作,如果为空,新增值为1
decr key 将key值存储的数字减1,只对数字值操作,如果为空,新增值为1
decr key 将key值存储的数字减1
incrby/decrby key <步长> 将key值存储的数字增减如步长
补充:
原子操作
不会被打断,从开始到结束
单线程不会被打断
多线程很难说,被打断的就不是原子操作
补充额外的字符串参数:
mset key value key value..同时设置一个或者多个key-value
mget key key…同时获取一个或多个value
msetnx key value key value..同时设置一个或者多个key-value.当且仅当所有给定key都不存在
getrange key <起始位置> <结束位置> 获取key的起始位置和结束位置的值
setrange key <起始位置> value 将value的值覆盖起始位置开始
setex key <> value 设置键值的同时,设置过期时间
getset key value 用新值换旧值
2.2.3 list列表
常用命令:
lpush/rpush key value value…从左或者右插入一个或者多个值(头插与尾插)
lpop/rpop key 从左或者右吐出一个或者多个值(值在键在,值都没,键都没)
rpoplpush key1 key2 从key1列表右边吐出一个值,插入到key2的左边
lrange key start stop 按照索引下标获取元素(从左到右)
lrange key 0 -1 获取所有值
lindex key index 按照索引下标获得元素
llen key 获取列表长度
linsert key before/after value newvalue 在value的前面插入一个新值
lrem key n value 从左边删除n个value值
lset key index value 在列表key中的下标index中修改值value
2.2.4 set集合
字典,哈希表
自动排重且为无序的
常用命令:
sadd key value value… 将一个或者多个member元素加入集合key中,已经存在的member元素被忽略
smembers key 取出该集合的所有值
sismember key value 判断该集合key是否含有改值
scard key 返回该集合的元素个数
srem key value value 删除集合中的某个元素
spop key 随机从集合中取出一个元素
srandmember key n 随即从该集合中取出n个值,不会从集合中删除
smove <一个集合a><一个集合b>value 将一个集合a的某个value移动到另一个集合b
sinter key1 key2 返回两个集合的交集元素
sunion key1 key2 返回两个集合的并集元素
sdiff key1 key2 返回两个集合的差集元素(key1有的,key2没有)
2.2.5 hash哈希
键值对集合,特别适合用于存储对象类型
常用命令:
hset key field value 给key集合中的filed键赋值value
hget key1 field 集合field取出value
hmset key1 field1 value1 field2 value2 批量设置hash的值
hexists key1 field 查看哈希表key中,给定域field是否存在
hkeys key 列出该hash集合的所有field
hvals key 列出该hash集合的所有value
hincrby key field increment 为哈希表key中的域field的值加上增量1 -1
hsetnx key field value 将哈希表key中的域field的值设置为value,当且仅当域field不存在
例如 hset user:1000 id 1
2.2.6 Zset有序集合
没有重复元素的字符串集合,按照相关的分数进行排名,排名从低到高,排名可重复
有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合
常用命令:
zadd key score1 value1 score2 value2 将一个或多个member元素及其score值加入到有序key中
zrange key start stop (withscores) 返回有序集key,下标在start与stop之间的元素,带withscores,可以让分数一起和值返回到结果集。
zrangebyscore key min max(withscores) 返回有序集key,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score的值递增次序排列
zrevrangebyscore key max min (withscores)同上,改为从大到小排列
zincrby key increment value 为元素的score加上增量
zrem key value 删除该集合下,指定值的元素
zcount key min max 统计该集合,分数区间内的元素个数
zrank key value 返回该值在集合中的排名,从0开始