linux - redis基础

redis 源码编译安装

1.安装redis的方式

-yum (删除这个yum安装的redis,我们只用源码编译安装的)

-rpm

-源码编译

2.删除原本的redis

yum remove redis -y

3.下载redis源码

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

4.解压缩

tar -zxf redis-4.0.10.tar.gz

5.切换redis源码目录

cd redis-4.0.10.tar.gz

6.编译源文件

make and make install

编译好后,src/目录下有编译好的redis指令

make install 安装到指定目录,

7.默认在/usr/local/bin

8.指定redis的配置文件 启动 redis

cd /opt/redis -4.0.10/

touch redis-6666.conf

vim redis-6666.conf

内容如下

port 6666 #redis端口

daemonize yes #后台运行redis

pidfile /data/6666/redis.pid#pid号码

loglevel notice#日志等级

logfile "/data/6666/redis.log" #日志文件存放路径

dir /data/6666 #redis数据目录 (需要手动创建)

requirepass haohaio #redis的密码

9.指定配置文件启动redis服务端

redis-server redis-6666.conf

10.检查redis的进程,端口

ps -ef |grep redis

netstat -tunlp |grep redis

11.登录redis数据库

redis-cli -p 6666

登录后 输入密码才可访问

auth haohaio

redis 数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型

字符串(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的数量

1. strings类型

set   设置key

get 获取key

append 追加string

mset 设置多个键值对

mget 获取多个键值对

del 删除key

incr 递增+1

decr 递减-1

127.0.0.1:6379> set name 'yu' #设置key

OK

127.0.0.1:6379> get name    #获取value

"yu"

127.0.0.1:6379> set name 'yuchao'  #覆盖key

OK

127.0.0.1:6379> get name    #获取value

"yuchao"

127.0.0.1:6379> append name ' dsb'   #追加key的string

(integer) 10

127.0.0.1:6379> get name  #获取value

"yuchao dsb"

127.0.0.1:6379> mset user1 'alex' user2 'xiaopeiqi'    #设置多个键值对

OK

127.0.0.1:6379> get user1    #获取value

"alex"

127.0.0.1:6379> get user2    #获取value

"xiaopeiqi"

127.0.0.1:6379> keys *      #找到所有key

1) "user2"

2) "name"

3) "user1"

127.0.0.1:6379> mget user1 user2 name #获取多个value

1) "alex"

2) "xiaopeiqi"

3) "yuchao dsb"

127.0.0.1:6379> del name        #删除key

(integer) 1

127.0.0.1:6379> get name        #获取不存在的value,为nil

(nil)

127.0.0.1:6379> set num 10    #string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作,而对于整型/浮点型可进行自增、自减操作。

OK

127.0.0.1:6379> get num

"10"

127.0.0.1:6379> incr num    #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器

(integer) 11

127.0.0.1:6379> get num

"11"

127.0.0.1:6379> decr num      #递减1

(integer) 10

127.0.0.1:6379> decr num    #递减1

(integer) 9

127.0.0.1:6379> get num

2. list 类型

lpush 从列表左边插

rpush 从列表右边插

lrange 获取一定长度的元素 lrange key start stop

ltrim 截取一定长度列表

lpop 删除最左边一个元素

rpop 删除最右边一个元素

lpushx/rpushx key存在则添加值,不存在不处理

lpush duilie 'alex' 'peiqi' 'ritian' #新建一个duilie,从左边放入三个元素

llen duilie #查看duilie长度

lrange duilie 0 -1 #查看duilie所有元素

rpush duilie 'chaoge' #从右边插入chaoge

lpushx duilie2 'dsb' #key存在则添加 dsb元素,key不存在则不作处理

ltrim duilie 0 2 #截取队列的值,从索引0取到2,删除其余的元素

lpop #删除左边的第一个

rpop #删除右边的第一个

3. sets集合类型

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

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

sadd/srem 添加/删除 元素

sismember 判断是否为set的一个元素

smembers 返回集合所有的成员

sdiff 返回一个集合和其他集合的差异

sinter 返回几个集合的交集

sunion 返回几个集合的并集

sadd zoo wupeiqi yuanhao #添加集合,有三个元素,不加引号就当做字符串处理

smembers zoo #查看集合zoo成员

srem zoo wupeiqi #删除zoo里面的alex

sismember zoo wupeiqi #返回改是否是zoo的成员信息,不存在返回0,存在返回1

sadd zoo wupeiqi #再把wupeiqi加入zoo

smembers zoo #查看zoo成员

sadd zoo2 wupeiqi mjj #添加新集合zoo2

sdiff zoo zoo2 #找出集合zoo中有的,而zoo2中没有的元素

sdiff zoo2 zoo #找出zoo2中有,而zoo没有的元素

sinter zoo zoo1 #找出zoo和zoo1的交集,都有的元素

sunion zoo zoo1 #找出zoo和zoo1的并集,所有的不重复的元素

有序集合

都是以z开头的命令

用来保存需要排序的数据,例如排行榜,成绩,工资等。

利用有序集合的排序,排序学生的成绩

127.0.0.1:6379> ZADD mid_test 70 "alex"

(integer) 1

127.0.0.1:6379> ZADD mid_test 80 "wusir"

(integer) 1

127.0.0.1:6379> ZADD mid_test 99 "yuyu"

排行榜,zreverange 倒叙 zrange正序

127.0.0.1:6379> ZREVRANGE mid_test 0 -1 withscores

1) "yuyu"

2) "99"

3) "wusir"

4) "80"

5) "xiaofneg"

6) "75"

7) "alex"

8) "70"

127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores

1) "alex"

2) "70"

3) "xiaofneg"

4) "75"

5) "wusir"

6) "80"

7) "yuyu"

8) "99"

移除有序集合mid_test中的成员,xiaofeng给移除掉

127.0.0.1:6379> ZREM mid_test xiaofneg

(integer) 1

127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores

1) "alex"

2) "70"

3) "wusir"

4) "80"

5) "yuyu"

6) "99"

返回有序集合mid_test的基数

127.0.0.1:6379> ZCARD mid_test

(integer) 3

返回成员的score值

127.0.0.1:6379> ZSCORE mid_test alex

"70"

zrank返回有序集合中,成员的排名。默认按score,从小到大排序。

127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores

1) "alex"

2) "70"

3) "wusir"

4) "80"

5) "yuyu"

6) "99"

127.0.0.1:6379>

127.0.0.1:6379>

127.0.0.1:6379> ZRANK mid_test wusir

(integer) 1

127.0.0.1:6379> ZRANK mid_test yuyu

(integer) 2

5. 哈希数据结构

哈希结构就是 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 判断是否存在

redis hash是一个string类型的field和value的映射表

语法 hset key field value

hset news:1 title "first news title" #设置第一条新闻 news的id为1,添加数据title的值是"first news title"

hset news:1 content "news content" #添加一个conntent内容

hget news:1 title #获取news:1的标题

hget news:1 content #获取news的内容

hmget news:1 title content #获取多对news:1的 值

hmset news:2 title "second news title" content "second Contents2" #设置第二条新闻news:2 多个field

hmget news:2 title content #获取news:2的多个值

hkeys news:1 #获取新闻news:1的所有key

hvals news:1 #获取新闻news:1的所有值

hlen news:1 #获取新闻news:1的长度

hdel news:1 title #删除新闻news:1的title

hlen news:1 #看下新闻news:1的长度

hexists news:1 title #判断新闻1中是否有title,不存在返回0,存在返回1

centos下redis安全相关

我们在使用redis时候,最好更改默认端口,并且使用redis密码登录。

(1)redis没有用户概念,redis只有密码

(2)redis默认在工作在保护模式下。不允许远程任何用户登录的(protected-mode)

redis.conf设置

protected-mode yes #打开保护模式

port 6380 #更改默认启动端口

requirepass xxxxxx #设置redis启动密码,xxxx是自定义的密码

启动redis服务端

redis-server /opt/redis-4.0.10/redis.conf & #指定配置文件启动redis,且后台启动

使用密码登录redis,使用6380端口

方法1,使用这个

[root@oldboy_python ~ 09:48:41]#redis-cli -p 6380

127.0.0.1:6380> auth xxxx

OK

方法2,此方案不安全,容易暴露密码

[root@oldboy_python ~ 09:49:46]#redis-cli -p 6380 -a xxxx

Warning: Using a password with '-a' option on the command line interface may not be safe.

127.0.0.1:6380> ping

PONG

补充

检查redis是否设置了密码

127.0.0.1:6380> CONFIG get requirepass

1) "requirepass"

2) "xxxxxx"

如果没有,也可以给redis设置密码(命令方式)

CONFIG set requirepass "xxxxxx"

linux重启网卡提示tent,linux相关推荐

  1. Linux重启网卡提示net,linux不显示ip及重启network失败的解决方案

    2若查不到ip,则查看ens33网卡的配置,输入vi /etc/sysconfig/network-scripts/ifcfg-ens33(vi后加空格) 将ONBOOT的权限改为yes 在这里插入图 ...

  2. linux重启网卡为down,linux重启网卡命令有哪些

    linux重启网卡命令有:1.命令[service network restart]:2.命令[ifconfig eth0 down / ifconfig eth0 up]:3.命令[ifdown e ...

  3. linux重启网卡提示failed,重启网卡失败的解决方法

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示 3.请使用命令行展开功能来完成以下练习 (1 ...

  4. VMware中linux添加网卡eth1后找不到网卡的问题Linux重启网卡报错:Bringing up interface eth0:1......

    方法一: 在创建虚拟机时选择了一个默认的网卡,需要添加新的网卡: 1.右键虚拟机,编辑设置,选择新设备-〉网络-〉添加,选择需要添加的网卡. 2.登陆到系统中后,ifconfig命令查不到新网卡,并且 ...

  5. Linux重启网卡报错:Bringing up interface eth0:1......

    今天楼主想在Linux下配置一款新的网卡的eth0:1,在重启网卡的时候报错:Bringing up interface eth1:  Device eth1 does not seem to be  ...

  6. Linux环境重启系统网卡down,linux重启网卡命令有哪些

    linux重启网卡命令有:1.命令[service network restart]:2.命令[ifconfig eth0 down / ifconfig eth0 up]:3.命令[ifdown e ...

  7. linux系统怎么重启网卡?linux重启网卡的三种教程

    在实际工作中,经常会遇到Linux系统进行重启网卡的操作.在这里整理一下,进行多种方法的网卡重启. 一.service network restart 1.首先用CRT工具连接到Linux命令行界面. ...

  8. 报错集:Linux重启网卡失败systemctl restart network

    Linux 重启网卡失败 报错如下: Job for network.service failed because the control process exited with error code ...

  9. 重启网卡提示Bringing up interface eth0

    当我们克隆centos虚拟机无法正常获取IP地址,重启网卡也提示Bringing up interface eth0:  Device eth0 does not seem to be present ...

最新文章

  1. yum安装rz,sz
  2. dom4j生成、解析xml
  3. 本地连接 阿里云 window 服务器mysql 总是2003
  4. lua string操作
  5. 阿里P8大佬亲自教你!java程序设计第四版pdf
  6. stylus之方法(Functions)
  7. 飞秋(FeiQ)海量的用户基数决定了这一模式
  8. 有哪些好用的电脑桌面分类管理软件?这3款软件让你的效率秒杀小伙伴!
  9. ArcGIS Pro + PS 矢量化用地规划图
  10. 测量string变量长度函数_测量字符串长度的函数
  11. SPSS数据分析常见问题(差异性研究)
  12. 信息系统安全等级保护(简称“等保”)
  13. 【流体机械原理及设计06】
  14. 前沿笔记|Eva:基于AI强化学习的COVID-19检测判断模型|Nature
  15. 纽约时报称刘强东卷入悉尼嫩模性侵案 京东回应:深表同情
  16. 微创居然被唐骏买了,顺便挖挖里面的内部
  17. 安装linux系统的ppt课件,《Linux系统的使用》PPT课件
  18. Python学习随记 ————随机抽号器(一)
  19. Deep Learning — LeCun, Yann, Yoshua Bengio and Geoffrey Hinton
  20. 机电传动控制与其他课程间的关系

热门文章

  1. 开源要安全!Linux 基金会、GitHub、GitLab、Google 联合起来了!
  2. SkyWalking 观测 Service Mesh 技术大公开
  3. 全网首次公开!iOS14 到来前,开发者必需的时间表及 To do list
  4. @IT老司机 6月3日,扫除技术与产品选型难题,CSDN选型智囊团来了!
  5. “抗疫”新战术:世卫组织联合IBM、甲骨文、微软构建了一个开放数据的区块链项目!...
  6. 在家远程办公效率低?那你一定要收好这个「在家办公」神器!
  7. 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
  8. 微软欲打造开发者联盟!
  9. 996.ICU 下被过度消费的程序员,还配享受生活吗?
  10. 为什么我写了一万小时的代码,却仍然成不了架构师?