设为首页 收藏本站
查看: 489|回复: 0

[经验分享] Redis缓存数据库服务器

[复制链接]

尚未签到

发表于 2018-11-3 07:00:52 | 显示全部楼层 |阅读模式
  Redis缓存数据库服务器
  Redis是一个开源的科技与内存也可持久化的日志型、Key-Value数据库
  Redis的存储分为内存存储、磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置。
  优势:
  和Mecached相比,它更加安全也支持存储的value类型相对更多。
  Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录
  文件,并且在此基础上实现了master-slave(主从)同步
  /var/log/redis_6379.log   日志文件
  /var/lib/redis/6379       数据目录
  /usr/local/bin/redis-server   Redis服务器软件存储路径
  vim /etc/redis/6379.conf      配置文件
  .....
  maxmemory     最大内存
  maxmemory-policy   volatile-lru  内存满时,使用LRU算法清理旧数据
  daemonize  yes       守护进程
  pidfile /var/run/redis_6379.pid  进程PID
  port 6379           端口号
  timeout 300         连接超时时间
  loglevel notice     日志级别
  logfile /var/log/redis_6379.log  日志文件
  databases  16       数据库个数
  save 900  1         数据库镜像频率
  dbfilename  dump.rdb 镜像备份文件名
  /var/lib/redis/6379  备份文件路径
  slaveof   设置主服务器IP及端口,主动与主服务器同步数据
  masterauth   主从认证的密码
  requirepass foobared  客户端连接服务器后需要先输入密码,再做其他操作
  maxclients  10000    最大客户端并发连接数量
  maxmemory      最大内存使用量
  

key匹配  
>keys *    显示所有key
  
>keys h?llo  ?匹配任意一个字符
  
>keys h*llo   *匹配任意多个字符
  
>keys h[ae]llo  匹配hello和hallo
  

  flushall
  清空所有数据
  

select>选择数据库,id用数字指定,默认数据库为0  >select 0
  >select 1
  

  move key db_id
  
将当前数据库的key移动到db_id数据库中
  
>move key 1  将key移动到1数据库中
  

  rename key  newkey
  给key改名为newkey,newkey已存在时,则覆盖其值
  

sort key  
对key进行排序
  
>lpush cost 1 8 7 2 5
  
>sort cost  默认对数字排序,升序
  
>sort cost desc 降序
  

  一、redis基础管理
  1、安装
  tar xzf redis-3.0.6.tar.gz
  cd redis-3.0.6/
  make && make install
  2、初始化
  ./utils/install_server.sh
  提示的问题可全部回车,但是要观察各种文件存放的路径
  3、服务管理
  ls /etc/init.d/redis_6379         //查看启动脚本
  service redis_6379 status 查看状态
  service redis_6379 stop
  service redis_6379 start
  netstat -nautlp |grep redis
  4、服务器基础测试
  redis-cli
  ping  测试服务器
  PONG
  127.0.0.1:6379> set username songtao 设置变量
  127.0.0.1:6379> get username  查看test值
  "songtao"
  127.0.0.1:6379> set counter 10
  OK
  127.0.0.1:6379> INCR counter
  (integer) 11
  127.0.0.1:6379> GET counter
  "11"
  127.0.0.1:6379> INCR mycounter    设置计数器mycounter
  (integer) 1
  127.0.0.1:6379> INCR mycounter    对计数器mycounter进行自增运算
  (integer) 2
  5、操作字符串
  格式:set  key  value  [ex  seconds] [px milliseconds] [nx|xx]
  设置key及值(value),过期时间可以设置为秒或毫秒为单位。
  nx只有key不存在,才对key进行操作
  xx只有key已存在,才对key进行操作
  

setrange key  offset value  
从偏移量开始复写key的特定位的值
  
set first "hello"
  
setrange first 5 "xixi" 改写为hellxixi
  

  
srtlen  ket
  
统计字串长度
  
strlen  first
  

  
append key value
  
字符存在则追加,不存在则创建key及value
  
返回值为key的长度
  
>append myname  jacob
  

  
setbit key iffset value
  
对key所存储字串,设置或清除特定偏移量上的位(bit)
  
value值可以为1或0,odffset为0~2^32之间
  
key不存在,则创建新key
  
>setbit abc  0 1
  
>setbit abc  1 0
  
abc:第0位为1,第一位为0
  

  
bitcount key
  
统计字串中被设置为1的比特位数量
  
>setbit  abcd 0 1  //0001
  
>setbit  abcd 3 1  //1001
  
>bitcount abcd     //结果为2
  

  
记录用户上线频率,将key设置为用户名,offset设置为上线日
  
并在该offset上设置为1。
  
>setbit  abcd 100 1  //网站上线100天用户登录1次
  
>setbit  abcd 225 1  //网站上线250天用户登录1次
  
>bitcount abcd     //结果为2
  

  
decr key
  
将key中的值减1,key不存在则先初始化为0,再减1
  
>set  test  10
  
>decr test
  

  
decrby  key  decrement
  
将key中的值,减去decrement
  
>set count 100
  
>decrby count 20
  

  
get key
  
返回key所存储的字符串值
  
如果key不存在则返回特殊值nil
  
如果key的值不是字串,则返回错误,get只能处理字串
  

  
getrange key  start end
  
返回字串值中的子字串,截取范围为start和end
  
负数偏移量表述从未尾计数,-1表示最后一个字符,-2表示倒数第二个字符
  
>set first "hello,the world"
  
>getrange  first -5 -1
  
>getrange  first 0 4
  

  incr key
  将key的值加1,如果key不存在,则初始化为0后再加1
  用于计数器:

  set page 20
  incr page

  

incrby key increment  
将key的值增加increment
  

  
incrbyfloat key increment
  
为key中多存储的值加上浮点数增量 increment
  
>set num 16.1
  
>incrbyfloat num 1.1
  

  
mget key [key...]
  
一次获取一个或多个key的值,空格分隔
  

  
mset key  value  [key  value ...]
  
一次设置多个key及值,空格分隔
  

  例·
  redis-cli
  127.0.0.1:6379> set first 'hello world' 设置字符串变量
  127.0.0.1:6379> get first
  "hello world"
  127.0.0.1:6379> SETRANGE first 6 ' hehehe' 将从第6字符修改,改写为hello hehehe
  127.0.0.1:6379> get first
  127.0.0.1:6379> APPEND username "sudan"  向变量中追加
  127.0.0.1:6379> SETBIT mytest 0 1
  (integer) 0
  127.0.0.1:6379> SETBIT mytest 1 0
  (integer) 0
  127.0.0.1:6379> get mytest
  127.0.0.1:6379> SETBIT peter 100 1   设置2进制的第100位为1
  (integer) 0
  127.0.0.1:6379> SETBIT peter 105 1   设置2进制的第105位为1
  (integer) 0
  127.0.0.1:6379> BITCOUNT peter       统计peter设置为1的位数有多少
  (integer) 2
  127.0.0.1:6379> set num1 100     相当于是num1=100
  OK
  127.0.0.1:6379> get num1
  "100"
  127.0.0.1:6379> INCR num1        相当于是num1++
  (integer) 101
  127.0.0.1:6379> DECR num1        相当于是num1--
  (integer) 100
  127.0.0.1:6379> DECRBY num1 10   # num1=num1-10
  127.0.0.1:6379> INCRBY num1 10   # num1=num1+10
  127.0.0.1:6379> set hi "hello world"
  127.0.0.1:6379> STRLEN hi
  127.0.0.1:6379> GETRANGE hi 6 -1
  127.0.0.1:6379> GETRANGE hi 6 1
  127.0.0.1:6379> set num2 10.5
  127.0.0.1:6379> INCRBYFLOAT num2 0.3
  "10.8"
  127.0.0.1:6379> INCRBYFLOAT num2 -0.8
  "10"
  127.0.0.1:6379> MGET num1 num2
  127.0.0.1:6379> MSET a 10 b "abc"
  OK
  127.0.0.1:6379> get a
  "10,"
  127.0.0.1:6379> get b
  "abc"
  Hash表数据
  Redis hash是一个string类型的field和value的映射表
  一个key可以对应多个field,一个field对应一个value
  将一个对象存储为hash类型,较于每个字段都存储成srting类型更能节省内存
  

hset key field value  
将hash表中field值设置为value
  
>hset site google 'www.goog.cn'
  
>hset site baidu 'www.baidu.com'
  

  
hget key filed
  
获取hash表中field的值
  
>hget  site  google
  

  
hmset key field value [field value..]
  
同时给hash表中的多个field赋值
  
>hmset site google www.goog.cn baidu www.baidu.com
  

  
hmget key  field [field...]
  
返回hash表中多个field的值
  
>hmget site google  baidu
  

  
hkeys key
  
返回hash表中所有field名称
  
>hmset site google www.goog.cn  baidu  www.baidu.com
  
>hkeys site
  

  
hgetall key
  
返回hash表中所有field的值
  

  
hvals key
  
返回hash表中所有field的值
  
>hvals  key
  

  
hdel key  field [field...]
  
删除hash表中多个field的值,不存在则忽略
  
>hdel site google baidu
  

  例:
  redis-cli
  127.0.0.1:6379> hset site google "www.google.com"
  (integer) 1
  127.0.0.1:6379> hset site baidu "www.baidu.com"
  (integer) 1
  127.0.0.1:6379> HGET site google
  "www.google.com"
  127.0.0.1:6379> hget site baidu
  "www.baidu.com"
  127.0.0.1:6379> hmset site2 tudu "www.tedu.cn" tar "www.tarler.com"
  127.0.0.1:6379> hmget site2 tudu tar
  127.0.0.1:6379> HKEYS site  查看key中存在的value
  127.0.0.1:6379> HKEYS site2
  127.0.0.1:6379> HGETALL site 返回field和value
  127.0.0.1:6379> HVALS site  返回site中所有的value
  127.0.0.1:6379> HDEL site google  从site中删除google
  list列表
  Redis的list是一个字符队列
  一个key可以有多个值
  

lpush key value [value...]  
将一个或多个值value插入到列表key的表头
  
key不存在,则创建key
  
>lpush  list a b c  //list1值依次为c b a
  
同等与lpush list a;lpush  list b;lpush  list c
  

  
lrange  key start stop
  
从开始位置读取key的值到stop结束
  
>lrange xixi 0  2   从0位置开始,读到2位结束
  
>lrange xixi 0  -1  从开始读到结束为止
  
>lrange xixi 0  -2  从开始读到倒数第2位为止
  

  
lpop key
  
移除并返回列表头元素数据,key不存在则返回nil
  
>lpop xiix   删除表头元素,可以多次执行
  

  
llen  key
  
返回列表key的长度
  

  
lindex key index
  
返回列表中第index个值
  
>lindex  key 0
  
>lindex  key -2
  

  
lset key index value
  
将key中index位置的值修改为value
  
>lset abc 3 test 将list中第3个值修改为test
  

  
rpush  key value [value..]
  
将value插入到key的末尾
  
>rpush  haha  a b c   //haha值为a b c
  
>rpush  haha  d       //末尾插入d
  

  例:
  redis-cli
  127.0.0.1:6379> LPUSH mylist chenshun chenglixin yegutian
  127.0.0.1:6379> LRANGE mylist 1 -1   查看列表中第1至最后1位的值
  127.0.0.1:6379> LPUSH mylist mayang
  127.0.0.1:6379> LRANGE mylist 0 -1  查看所有的值
  127.0.0.1:6379> help @   #表示按tab键
  127.0.0.1:6379> help @list
  127.0.0.1:6379> RPUSH mylist wanghong
  127.0.0.1:6379> LRANGE mylist 0 -1
  127.0.0.1:6379> LSET mylist 2 chenyuan
  127.0.0.1:6379> LLEN mylist
  127.0.0.1:6379> LPOP mylist
  127.0.0.1:6379> RPOP mylist
  127.0.0.1:6379> LINDEX mylist 1
  127.0.0.1:6379> get username
  127.0.0.1:6379> ttl username  # 查看生存周期
  127.0.0.1:6379> PERSIST username # 设置永不过期
  127.0.0.1:6379> EXPIRE username 30  # 生存时间为30秒
  127.0.0.1:6379> del mylist    # 删除mylist
  127.0.0.1:6379> keys   # 查看所有的key
  127.0.0.1:6379> set hello 10
  OK
  127.0.0.1:6379> set hllo 20
  OK
  127.0.0.1:6379> set habllo 30
  OK
  127.0.0.1:6379> set hfllo 40
  OK
  127.0.0.1:6379> KEYS h?llo  # ?匹配任意一个字符
  127.0.0.1:6379> KEYS hllo  # 匹配0到多个任意思字符
  127.0.0.1:6379> KEYS h[a-z]llo  # []匹配1个字符
  127.0.0.1:6379> set h1llo 5
  127.0.0.1:6379> KEYS h[a-z0-9]llo
  127.0.0.1:6379> KEYS h[ade0-9]llo
  127.0.0.1:6379> KEYS
  127.0.0.1:6379> FLUSHALL  清空所有数据
  127.0.0.1:6379> KEYS
  127.0.0.1:6379> set username zhangsan
  127.0.0.1:6379> get username
  "zhangsan"
  127.0.0.1:6379> select 1
  127.0.0.1:6379[1]> get username
  (nil)
  127.0.0.1:6379[1]> select 0
  127.0.0.1:6379> get username
  "zhangsan"
  127.0.0.1:6379> select 0
  127.0.0.1:6379> MOVE username 1
  (integer) 1
  127.0.0.1:6379> get username
  (nil)
  127.0.0.1:6379> select 1
  OK
  127.0.0.1:6379[1]> get username
  "zhangsan"
  127.0.0.1:6379[1]>
  127.0.0.1:6379[1]> keys
  1) "username"
  127.0.0.1:6379[1]> RENAME username name  # 改名
  OK
  127.0.0.1:6379[1]> keys *
  1) "name"
  127.0.0.1:6379[1]> get name
  "zhangsan"
  127.0.0.1:6379[1]> lpush mylist 10 2 38 69 42
  127.0.0.1:6379[1]> SORT mylist  # 不会改变mylist
  127.0.0.1:6379[1]> LRANGE mylist 0 -1
  127.0.0.1:6379[1]> sort mylist desc   # 降序
  127.0.0.1:6379[1]> lpush names zhangsan lisi bob alice
  127.0.0.1:6379[1]> sort names alpha  #按字母顺序排序
  按字母顺序排序,从下标为1的单词开始,取出2项
  127.0.0.1:6379[1]> SORT names alpha limit 1 2
  127.0.0.1:6379[1]> SORT names alpha limit 1 2 desc
  将mylist排序后,另存为mylist2
  127.0.0.1:6379[1]> sort mylist store mylist2
  127.0.0.1:6379[1]> LRANGE mylist2 0 -1
  

    配置redis主从  

  1、主服务器使用现有的redis
  2、从服务器
  yum install -y gcc gcc-c++
  tar xzf redis-3.0.6.tar.gz
  cd redis-3.0.6/
  make && make install
  ./utils/install_server.sh
  3、主服务器设置同步密码
  vim /etc/redis/6379.conf  配置文件
  requirepass redis123   设置服务器密码
  重启服务:
  service redis_6379 restart 或
  /etc/init.d/redis_6379 restart
  4、设置关闭服务的认证密码
  vim /etc/init.d/redis_6379
  $CLIEXEC -a redis123 -p $REDISPORT shutdown
  重启服务:service redis_6379 restart
  5、配置从属服务器配置文件
  vim /etc/redis/6379.conf
  slaveof 192.168.4.1 6379  主服务器ip
  masterauth redis123
  重启服务:service redis_6379 restart
  6、验证主从数据是否相同
  登录主:
  redis-cli -h 192.168.4.1 -a redis123
  192.168.4.1:6379> set aaa 100
  从:
  redis-cli
  127.0.0.1:6379> keys *
  127.0.0.1:6379> get aaa



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629987-1-1.html 上篇帖子: redis-4.0.1安装配置(CentOS 6.6) 下篇帖子: Redis 数据结构与内存管理策略(上)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表