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

[经验分享] redis(1)

[复制链接]

尚未签到

发表于 2018-11-3 12:46:32 | 显示全部楼层 |阅读模式
  安装redis
  wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  tar xzf redis-3.0.7.tar.gz
  ln -s redis-3.0.7 redis
  yum install gcc -y
  make
  ##zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
  README
  说的是关于分配器allocator, 如果有MALLOC  这个 环境变量, 会有用这个环境变量的 去建立redis。
  而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
  但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
  解决办法
  make MALLOC=libc
  make MALLOC=libc
  make
  make install
  redis-cli -v
  redis-server /root/redis/redis.conf & (从配置文件启动)
  redis-cli -h 127.0.0.1 -p 6379
  redis-cli -h 127.0.0.1 -p 6379 get hello    (直接得到命令的返回结果)
  #停止redis服务
  redis-cli shutdown
  ##redis关闭的过程:断开与客户端的连接、持久化文件生成
  ##kill -9 强制杀死redis服务,不但不会做持久化操作,还会造成缓存区资源不能被优雅关闭,极端情况会造成AOF和复制丢失数据的情况
  ##redis还有一个参数,代表是否在关闭redis前,生成持久化文件;
  redis-cli shutdown nosave|save
  redis有五种数据结构,他们是键值对中的值,对于键来说有一些通用的命令
  1.查看所有键
  keys *
  2.键总数
  dbsize
  3.检查键是否存在
  exists key
  如果键存在返回1,不存在返回0
  4.删除键
  del keys
  del是一个通用的命令,无论值是什么数据结构类型,del命令都可以将其删除。
  5.键过期
  expire key seconds
  ttl命令会返回键的剩余过期时间,他有3种返回值;
  大于等于0的整数:键剩余的过期时间
  -1:键没设置过期时间
  -2:键不存在
  6.键的数据结构类型
  type key
  数据结构和内部编码:
  type命令实际返回的就是当前值的数据结构类型,他们分别是:string(字符串)、hash、list(列表)、set(集合)、zset(有序集合)
  实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样会在redis会在合适的场景选择合适的内部编码
  可以通过object encoding命令查询编码:
  object encoding hello
  redis这样设计有两个好处:第一,可以改进内部编码,而对外的数据结构和命令没有影响,这样一旦开发出更优秀的内部编码,无需改动外部数据结构和命令。
  第二,多种内部编码实现可以在不同场景下发挥各自的优势,例如ziplist比较节省内存,但是在列表元素比较多的情况下,性能会有所下降,这时候redis会根据配置选项将列表类型的内部实现转换为linkedlist.
  单线程架构:
  redis使用了单线程结构和I/O多路服用的模型来实现高性能的内存数据库服务
  为什么单线程还能这么快?
  通常来讲,单线程处理能力要比多线程差。
  第一,纯内存访问;第二,非阻塞I/O;第三单线程避免了线程切换和竞态产生的消耗。
  但是单线程会有一个问题:对于每隔命令的执行时间是有要求的。如果某个命令执行过长,会造成其他命令的阻塞,对于redis这种高性能的服务来说是致命的,所以redis是面向快速执行场景的数据库。
  命令:
  1、set key value [ex seconds] [px milliseconds] [nx|xx]  设置值
  ex seconds:为键设置秒级过期时间
  px milliseconds:为键设置毫秒级过期时间
  nx:键必须不存在,才可以设置成功,用于添加
  xx:与nx相反,键必须存在,才可以设置成功,用于更新
  2、get key   获取值
  如果要获取的键不存在,则返回nil(空)
  3.批量设置值
  mset key value [key value ...]
  4.批量获取值
  mget key [key ...]
  5.计数
  incr key
  incr命令用于对值做自增操作,返回结果分为三种情况:
  值是不是整数,返回错误
  值是整数,返回自增后的结果
  键不存在,按照值为0自增,返回结果为1
  不常用命令
  1.追加值
  append key value
  append可以向字符串尾部追价值
  2.字符串长度
  strlen key
  3.设置并返回原值
  getset key value
  getset和set一样会设置值,但是不同的是,他同时会返回键原来的值
  4.设置指定位置的字符
  setrange key offeset value
  5.获取部分字符串
  getrange key start end
  内部编码
  字符串类型的内部编码有3种
  int:8个字节的长整型
  embstr:小宇等于39个字节的字符串
  raw:大于39个字节的字符串


运维网声明 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-630254-1-1.html 上篇帖子: redis相关总结 下篇帖子: java连接redis,实现订阅发布遇到的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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