linux--redis

redis

redis在linux的安装

1.redis安装方式
    yum安装(提前配置好yum源)
    yum install  redis -y  #
    源代码编译安装
    rpm包手动安装
    
    
2.编译安装redis 
    创建一个文件夹,存redis(也可以不用创建)
        mkdir linux_redis
        cd linux_redis
    1.在redis目录下,下载redis源代码包
        wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    2.解压缩redis源码包
    
    3.编译三部曲 
        指定安装路径 ,生成makefile 编译文件 
            ./configure --prefix=redis的安装路径
        开始编译
            make
        编译安装
            make install  
        编译完成后,默认生成可使用的redis命令
            /usr/local/bin/redis-server     
    4.修改redis的配置文件,支持更安全的启动方式
        vim redis.conf 
        
    #打开redis密码的参数
        requirepass 123456789
    #开启安全模式
        protected-mode yes
    #修改redis的默认启动端口,以及绑定地址
        bind 0.0.0.0
        port 6800

        
    #过滤出非空行,注释行的内容,重定向写入到一个文件中
     grep  -v "^$"  redis.conf |grep  -v "^#"  > linuxredis.conf
    #在配置文件结尾加上后台启动参数
    daemonize  yes

    5.启动redis服务端
     redis-server linuxredis.conf 

    6.验证redis是否启动
        netstat -tunlp |grep  redis
        ps -ef|grep redis 
        
    7.指定密码登录redis
        [root@localhost redis-5.0.7]# redis-cli -p 6800
        127.0.0.1:6800> ping
        (error) NOAUTH Authentication required
        127.0.0.1:6800> auth 123456789
        OK
        127.0.0.1:6800> ping
        PONG  

redis常用命令

redis的数据类型

字符串(strings)
哈希(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

命令练习

基础命令

keys *         查看所有key
type key      查看key类型
expire key seconds    过期时间
ttl key     查看key过期剩余时间        -2表示key已经不存在了
persist     取消key的过期时间   -1表示key存在,没有过期时间

exists key     判断key存在    存在返回1    否则0
del keys     删除key    可以删除多个
dbsize         计算key的数量

strings类型数据相关命令

set   设置key
get     获取key
append  追加string
mset    设置多个键值对
mget    获取多个键值对
del     删除key
incr    递增+1
decr    递减-1



127.0.0.1:6800> set name 'bajie' #设置key

127.0.0.1:6800> get name   #获取key的值
"bajie"

127.0.0.1:6800> set name 'pig'   #覆盖key
OK
127.0.0.1:6800> get name
"pig"

127.0.0.1:6800> APPEND name 'dsb'  #追加key的string ,不区分大小写
(integer) 6
127.0.0.1:6800> get name
"pigdsb"

127.0.0.1:6800> mset name1 'monkey' name2 'tangseng' #设置多个键值对
OK
127.0.0.1:6800> keys *
1) "name2"
2) "name1"
3) "name"

127.0.0.1:6800> mget name name1 name2  #获取多个value
1) "pigdsb"
2) "monkey"
3) "tangseng"

127.0.0.1:6800> del name2   #删除key
(integer) 1  #删除一个不存在的key,结果为nil
127.0.0.1:6800> keys *
1) "name1"
2) "name"

127.0.0.1:6800> set num 10
OK
127.0.0.1:6800> get num
"10"
#string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作,而对于整型/浮点型可进行自增、自减操作。
127.0.0.1:6379> incr num    #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器
(integer) 11
127.0.0.1:6800> get num  
"11"
127.0.0.1:6800> decr num      #递减1  
(integer) 10
127.0.0.1:6800> decr num    #递减1
(integer) 9
127.0.0.1:6800> get num
"9"

hashes哈徐数据相关命令

哈希结构就是  k1   ->  k1 : v1     如同字典 套字典  { k1 : { k2: v2 }  }   ,取出v2 必须  k1,取出k2

hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

    hset 设置散列值
    hget  获取散列值
    hmset  设置多对散列值
    hmget  获取多对散列值
    hsetnx   如果散列已经存在,则不设置(防止覆盖key)
    hkeys     返回所有keys
    hvals     返回所有values
    hlen      返回散列包含域(field)的数量
    hdel     删除散列指定的域(field)
    hexists    判断是否存在
127.0.0.1:6800> hset news title 'first news title'
(integer) 1
#设置第一条新闻 news的id为1,添加数据title的值是"first news title"

127.0.0.1:6800> hset news content 'first news content'
(integer) 1 
#添加一个conntent内容

127.0.0.1:6800> hget news title  #获取new的标题
"first news title"

127.0.0.1:6800> hget news content  #获取new的内容
"first news content"

127.0.0.1:6800> hmget news title content  #获取news的标题和内容
1) "first news title"
2) "first news content"

127.0.0.1:6800> hmset news1 title 'second news title' content 'second content'
OK
127.0.0.1:6800> hmget news1 title content
1) "second news title"
2) "second content"
#分别同时设置标题和内容并获取标题和内容

127.0.0.1:6800> hkeys news  #获取news的key
1) "title"
2) "content"

127.0.0.1:6800> hvals news  #获取news的值
1) "first news title"
2) "first news content"

127.0.0.1:6800> hlen news  #获取news的长度
(integer) 2

127.0.0.1:6800> hdel news title  #删除news的标题title
(integer) 1
127.0.0.1:6800> hlen news  #检查一下长度
(integer) 1

127.0.0.1:6800> HEXISTS news title   #判断news中是否有title,不存在返回0,存在返回1
(integer) 0

lists列表相关命令

lpush           从列表左边插
rpush           从列表右边插
lrange          获取一定长度的元素  lrange key  start stop
ltrim           截取一定长度列表
lpop            删除最左边一个元素
rpop            删除最右边一个元素
lpushx/rpushx   key存在则添加值,不存在不处理

127.0.0.1:6800> lpush users 'bajie' 'monkey' 'tagnseng'  #新建一个users,从左边放入三个元素
(integer) 3  

127.0.0.1:6800> llen users #查看users长度
(integer) 3

127.0.0.1:6800> lrange users 0 -1  #查看users所有元素
1) "tagnseng"
2) "monkey"
3) "bajie"

127.0.0.1:6800> rpush users 'shasha' #从右边插入shasha
(integer) 4
127.0.0.1:6800> lrange users 0 -1 #查看users的所有元素
1) "tagnseng"
2) "monkey"
3) "bajie"
4) "shasha"

127.0.0.1:6800> lpop users  #删除左边第一个元素
"tagnseng"
127.0.0.1:6800> lrange users 0 -1
1) "monkey"
2) "bajie"
3) "shasha"

127.0.0.1:6800> rpop users   #删除右边第一个元素
"bajie"

sets集合相关命令

redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

    sadd/srem         添加/删除 元素
    sismember         判断是否为set的一个元素
    smembers          返回集合所有的成员
    sdiff             返回一个集合和其他集合的差异
    sinter            返回几个集合的交集
    sunion            返回几个集合的并集
127.0.0.1:6800> sadd class bajie monkey  #添加集合,有三个元素,不加引号就当做字符串处理
(integer) 2

127.0.0.1:6800> SMEMBERS class  #查看集合class成员
1) "monkey"
2) "bajie"

127.0.0.1:6800> srem class monkey  #删除class的monkey
(integer) 1
127.0.0.1:6800> SMEMBERS class
1) "bajie"


127.0.0.1:6800> SISMEMBER class bajie  
(integer) 1
127.0.0.1:6800> SISMEMBER class monkey
(integer) 0
127.0.0.1:6800> 
#返回改是否是class的成员信息,不存在返回0,存在返回1

127.0.0.1:6800> sadd class monkey #再把monkey加入class
(integer)  1
 
127.0.0.1:6800> sadd class2 bajie shasha  #添加新集合zoo2
(integer) 2
127.0.0.1:6800> SMEMBERS class2
1) "shasha"
2) "bajie"

127.0.0.1:6800> sdiff class class2 #找出集合class中有的,而class2中没有的元素
1) "monkey"

127.0.0.1:6800> sdiff class2 class   #找出集合class2中有的,而class中没有的元素
1) "shasha"

127.0.0.1:6800> sinter class class2 #找出class和class2的交集,都有的元素
1) "bajie"

127.0.0.1:6800> SUNION class class2  #找出class和class2的并集,所有的不重复的元素
1) "shasha"
2) "bajie"
3) "monkey"

sorted sets有序集合相关命令

都是以z开头的命令

zset的每一个成员都有一个分数与之对应,并且分数是可以重复的。有序集合的增删改由于有啦排序,执行效率就是非常快速的,即便是访问集合中间的数据也是非常高效的。

用来保存需要排序的数据,例如排行榜,成绩,工资等。
利用有序集合的排序,排序学生的成绩
127.0.0.1:6800> ZADD class_test 70 'bajie'
(integer) 1
127.0.0.1:6800> ZADD class_test 80 'monkey'
(integer) 1
127.0.0.1:6800> ZADD class_test 75 'shasha'
(integer) 1
127.0.0.1:6800> ZADD class_test  99 'tangseng'
(integer) 1

排行榜,zreverange 倒叙 zrange正序

127.0.0.1:6800> ZREVRANGE class_test 0 -1 withscores
1) "tangseng"
2) "99"
3) "monkey"
4) "80"
5) "shasha"
6) "75"
7) "bajie"
8) "70"

127.0.0.1:6800> ZRANGE class_test 0 -1 withscores
1) "bajie"
2) "70"
3) "shasha"
4) "75"
5) "monkey"
6) "80"
7) "tangseng"
8) "99"

移除有序集合class_test中的成员,bajie给移除掉

127.0.0.1:6800> ZREM class_test bajie
(integer) 1
127.0.0.1:6800> ZRANGE class_test 0 -1 withscores
1) "shasha"
2) "75"
3) "monkey"
4) "80"
5) "tangseng"
6) "99"

返回有序集合class_test的基数

127.0.0.1:6800> ZCARD class_test 
(integer) 3

返回成员的score值

127.0.0.1:6800> ZSCORE class_test monkey
"80"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值