Linux安装redis6.0.6版本及简单使用

安装redis

  1. reids官网下载https://redis.io/download/下载tar.gz的安装包
  2. 使用工具将下载的安装包发送的linux系统/opt目录下,使用tar -zxvf redis-6.0.6.tar.gz解压安装包
  3. cd redis-6.0.6/ 执行make命令,出现离开目录/opt/redis-6.0.6/src表示安装成功,如果提示不正确,可能是没有gcc编译器或者gcc编译器版本过低。可以执行以下命令:
rpm -qa | grep gcc #查询有没有安装gcc编译器
yum -y install gcc #安装gcc编译器
#升级gcc版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#安装gcc之后在redis-6.0.6目录下执行make命令

安装过程截图
4. 在redis-6.0.6目录下执行make install,没有成功,也需要升级gcc编译器版本。
5. 执行成功截图如下,成功之后/usr/local/bin目录下会有一些redis相关的文件,没有文件则表示make install安装失败。
make install成功截图

启动关闭redis

#拷贝一份/opt/redis-6.0.6/redis.conf文件到/usr/local/bin/目录下
#redis启动命令 redis-server redis.conf文件地址,会在当前路径下成存放数据的文件dump.rdb
redis-server redis.conf #没有修改redis.conf的配置文件是前台启动,关闭窗口就退出redis服务端
redis-cli -p 6379 #连接本地的redis服务端端口号为6379,redis服务端默认端口

#######关闭redis服务端
shutdown #客户端执行 执行后exit
redis-cli shutdown #能直接关闭redis服务端
前台启动redis窗口ctrl+c
kill 进程pid #ps -a 可以查询对应命令的pid(前台运行的窗口才能查到)
kill -9 进程pid #这个会导致程序直接退出,会造成数据的丢失
ps -ef | grep redis #查询redis-server服务端运行的pid进程号

简单修改配置文件

vim redis.conf #查看redis.conf配置文件
:set nu #设置显示行号
ctrl + f向下翻页 ctrl+b向上翻页

# 设置支持远程连接
69#注释bind 127.0.0.1,让redis设置支持远程连接 
89行 protected-mode yes yes改为no

# 设置后台启动redis
222行 daemonize no改为yes

#设置客户端连接密码验证 /requirepass n继续向下查找 N向上查找
786行 requirepass 后面跟自己想设置的密码

:wq保存退出

设置requirepass连接redis-server

redis-cli -p 6379 -a [password] #连接成功后会提示命令行带参数连接不安全
redis-cli -p 6379 # 连接redis-server后 auth [password] 进行密码验证,不进行验证不能查询数据

key操作命令

exists [key] [key...] #加入key存在,key1不存在返回值1
move [key] [db] #移动kv键值对至db数据库,move成功返回值1,失败0
select [db] #db的取值是0-15选中数据库,切换成功OK
keys [pattern] #pattern可以是通配符,可以查询数据库里面的key
expire [key] [seconds] #设置key的过期时间为seconds秒,设置成功返回值为1
ttl [key] #查看key的过期时间,-1表示永不过期,过期时间是实时的,不能存在为-2
set [key] [value] [EX seconds | PX milliseconds] [NX|XX] [KEEPTTL] #往数据库中添加键值对,如果存在key,会覆盖这个key.EX seconds 表示设置过期时间是多少秒,PX毫秒。过期时间会被覆盖掉
get [key] #从数据库中取值,不存在key,结果为nil
del [key] [key...] #删除kv键值对,返回成功删除的数量
type [key] #查看key的类型,不存在key返回值为none
randomkey #从数据中随机返回一个key,数据库中没有key为nil

flushdb [ASYNC]  #清空当前数据库key=value
flushall [ASYNC] #清空所有数据库内容
dbsize #查看数据库的key=value键值对数量

redis数据类型

String类型

append [key] [value] #key不存在,添加key=value,返回value的长度,key存在,value后面追加value返回总的字符串长度
strlen [key] #key存在,返回value的长度,key不存在,value为0
incr [key] #key的value不是数值报错,key不存在默认创建0,返回值为自增后的值
decr [key] #key的value不是数值报错,key不存在默认创建0,返回值为自减后的值
incrby [key] [increment] #错误清空同上,increment可以为负数,变自减多少
decrby [key] [decrement] #错误情况同上,decrement可以为负数,变自增多少
getrange [key] [start] [end] #下标从0开始,-1表示最后一个字符,start可以为负数
setrange [key] [offset] [value] #从下标offset开始替换,空串不能替换,空格可以替换,返回值是value的长度
setex [key] [seconds] [value] #设置key的过期时间,seconds不能为0和负数,成功OK。
setnx [key] [value] #key不存在才设置key=value,设置成功结果为1;存在不设置,结果为0。
mset [key value] [key value...] #设置多对键值对,一个出错,全部不设置,成功为OK
mget [key] [key ...] #获取多个value,按key的顺序排列,没有的返回nil
msetnx [key value] [key value ...] #要多对键值对都不存在才能设置成功
getset [key] [value] #先获取值,再设置值,不存在key获取为nil,然后设置key=value

list类型

list是一个列表数据类型,按照插入顺序排序。l表示列表的头部下标为0,r表示列表的尾部为-1。有序可重复

lpush [key] [element] [element ...] #往key对应的列表左边头部添加元素,结果为list的长度
rpush [key] [element] [element ...] #往key对应的列表右边头部添加元素,
lpop [key] #key对应的列表左边头部移除元素,所有元素弹出之后,key=value消失
rpop [key] #key对应的列表右边头部移除元素,所有元素弹出之后,key=value消失
llen [key] # key对应list的数据数量,为0,表示不存在
lindex [key] [index] #从key对应的列表中获得下标的值0开始,列表不存在,对应的下标不存在为nil
lrange [key] [start] [end] #没有结果为empty array,有结果按左边为头部下标排序
lrem [key] [count] [element] #从列表中移除元素element,返回值为成功的移除数量,0表示移除全部的element
ltrim [key] [start] [end] #语法没有问题,结果都为OK,start=end会阶段原来的list 其他未知?
lset [key] [index] [element] #key不存在,index超过下标报错。成功OK
linsert [key] [before|after] [pivot] [element] #再key对应的列表中,存在pivot元素,在前面或者后面添加element,成功则值为list长度,pivot不存在为-1,key不存在为0。如果存在两个pivot,在第一个前面操作。
rpoplpush [source] [destination] #从source中弹出尾部的element然后lpush进destination中,成功为element,失败为nil

set类型

set是一个无序不重复的数据类型

sadd [key] [member] [member ...] #member重复不计算
scard [key] #key对应set中元素的数量,set不存在为0
smembers [key] #展示key对应set的所有元素,无序,key不存在则empty array
sismember [key] [member] #member是否在key对应的set中,1表示在,0表示不在,或者不存在set
srandmember key [count] #没有count表示随机一个,key不存在nil
srem key [member] [member...] #从key对应的set中移除成员,返回值是成功移除的数量
smove source destination member #将source对应中的member移动到destination中,返回值是移动的数量
sdiff key [key ...] #返回第一个key的子集,且里面不能有后面key的元素
sunion key [key ...] #返回key对应set的并集,且没有重复元素
sinter key [key ...] #返回key对应set的交集
spop key [count] #从key对应的set中弹出一个元素,count指定弹出元素,可以超过scard的数量,不会出错

hash类型

hash类型是一个类似java的pojo模型,key相当于this对象,field对应java对象属性,value及对象的值

hset key field value [field value ...] #设置多对field=value绑定至key,返回值为添加的几对关系,field重复算1。覆盖已有的key不会,只有添加新的field=value才会计数
hmset key field value [field value ...] #设置多对关系,返回值为ok
hget key field #获取field对应的value
hmget key field [field ...] #获取多对键值对关系,没有的nil
hgetall key #获取key对应的filed=value的对应情况
hlen key #field=value有几对
hdel key field [field ...] #删除指定key的field=value的关系,成功删除几个返回对应数量
hexists key field #有没有key对应有field的value 1表示有,0表示没有
hkeys key #获取key对应的所有field结果
hvals key #获取可以对应的所有value值
hincrby key field increment #字段存在加上increment,不存在创建默认的field=0
hsetnx key field value #key中不存在field=value的键值对才设置

存java的pojo对象

zset类型

zset是一个有序不重复的集合

zadd key [NX|XX] [CH] score member [score member ...] #score必须用数值表示,score 和number绑定关系。
[NX]不存在才创建,不更新已有的元素,总是添加新元素
[XX]存在才更新.永远不要添加新元素
[CH]将返回值从添加的新元素数修改为改变的元素总数
zcard key #key对应集合里面的元素
zrem key number [number ...] #
zrange key start stop [withscores] #按member对应的score从小到大排序展示,添加withscores则后面展示对应的数值
zrevrange key start stop [withscores] #和上面相反
zrangebyscore key min max [withscores] [limit offset count]  #min,max表示scores的取值范围,limit后面表示展示多少条数据offset下标,count数量。-inf无穷小,+inf无穷大
zcount key min max #score在这里面对应的member数量
zincrby key increment member #key中member的score自增increment,为负数表示自减。

应用场景:点击量,热度

Geospatial

位置坐标

geoadd key longitude latitude member [longitude latitude member ...] 
longtirude 经度 latitude 纬度 member唯一,因为这个类型是zset类型,所以可以用zrange key start stop来遍历这个key
geopos key member [member ...] #查看member的经度纬度
geodist key member1 member2 [m|km|ft|mi] #member1和member2的直线距离
georadius key longtitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count] [asc|desc] [store key] [storedist key] #以填写的经度纬度坐标为原点,半径为radius的范围内的坐标,key中满足的number
georadiusbymember key member radius m|km|ft|mi  [withcoord] [withdist] [withhash] [count count] [asc|desc] [store key] [storedist key] key对应的zset以member为原点,坐标在以radius为半径的范围内。
geohash key member [member ...] #key中的member的坐标转换成hash值输出,11位字符串

hyperloglog

hyperloglog用type查看时string类型,但是不能用append key来给这个类型追加string,会造成超文本损坏。

pfadd key element [element ...] #
pfcount key [key ...] # 
pfmerge destkey sourcekey [sourcekey ...] #

bitmap

setbit key offset value
getbit key offset
bitcount key [start end]

redis事务

执行事务的两种情况

Redis 中的事务(transaction)是一组命令的集合,至少是两个或两个以上的命令,redis事务保证这些命令被执行时中间不会被任何其他操作打断。redis事务不保证完全一致性,单个执行命令具有原子性,命令执行有序性,执行命令过程中不可被打断。事务步骤:

  1. 开启事务multi
  2. 命令入队
  3. 执行事务exec或者取消事务discard
#事务开启出现错误的两种情况
multi
set k1 v1 
set k2 v2
incrby k1 10
exec
#这个过程中,出现了类型转换错误,前面两句set命令都会执行。
multi
set k1 v1
set k2 v2
getset k1
exec
#这个过程中出现了语法错误,执行exec,这个时候所有入队的命令都不会执行

watch

使用watch监视一个或者多个key,如果在事务执行之前这个或者这些key被其他命令改动,那么事务被打断,cli返回nil。watch在事务执行exec或者discard之后都会取消监视。
unwatch取消所有key的监视

set a 1000
set b 500
watch a b
multi #开启事务
incrby a -100
incrby b 100 #在执行事务之前其他窗口执行了 incrby a 100
exec 这个时候就会导致事务被打断,修改失败。就算另外一个窗口在修改之前执行了watch a ,也是事务这种方式执行的,还是会会导致当前a和b的事务失败。








  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值