Redis基本操作

NoSQL(Not Only SQL)

NoSQL指的是非关系型数据库,是对不同于传统关系型数据库的数据库管理系统简称,NoSQL是web2.0时代海量数据催生的产物。

特点:

  1. 不支持SQL语法
    NoSQL的世界中没有通用的语言,每种nosql数据库都有自己的语法,以及擅长的业务场景。
  2. 读写性能高
    NoSQL数据库都具有非常高的读写性能,尤其在海量数据下,它的表现非常优秀。
  3. 灵活的数据模型
    NoSQL的存储方式十分灵活,存储方式可以是JSON文档、键值对(key-value)或者其他方式。

redis 基本操作

1. 什么是Redis

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便

  • Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
  • Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
关系型数据库和非关系数据库的区别
  • 关系型数据库
    表和表之间存在的关系
  • 非关系型数据库
    不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的。
安装redis
 sudo apt-get update
 sudo apt-get install redis-server
进入redis
redis-cli   
redis-cli   --raw    #能显示中文

exit        #退出
#Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
#默认使用 0 号数据库   默认开16个库
SELECT 1    # 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]

redis五种数据类型、及操作

  • string 字符串
  • list 列表
  • hash 哈希
  • set 集合
  • sorted sets 有序集合
key 有5中数据类型:string、list、set、zset(sorted set)、hash。
value :都是字符串类型的(可加引号也可不加)

string

string是redis最基本的类型,一个key对应一个value

设置
    set key value     例:   ( set name 'jianeng' )
获取
    get key           例:   ( get name   )
    # key是唯一的,不能用同一个key 不然就会覆盖
查看过期时间
    # -1 表示永久     -2 表示 不存在
    ttl key         例:    ( ttl name )
设置过期时间
    # 给已经存在 key,设置过期时间
    expire key seconds   例:  ( expire name 20  )
    
    # 设置 key的同时,设置过期时间
    set key value ex seconds   例: ( set age 18 ex 20 )
    或
    setex key seconds value    例: ( setex sex 20 '男' )
追加
    # 给已有的value,再添加新的值
    # append key value
    例
    append name  love
    #get name

redis 里面所有的 value。 都是字符串类型的

设置 / 获取 多个
    #设置多个 string
    mset key value  key value..
    例子
    mset username 'jianeng'  password  '123'
    
    #获取多个
    mget key key key ...
    例
    mget username password name 

全局key 操作

对redis五个数据类型都适用的命令。

查看所有的key
     keys *
     keys n*
删除
     del key        例:  (del name)
查看key是否存在 ,存在返回 1, 不存在返回 0
     exists key 
查看key类型
     type key
运算
    set num 1    # 自动识别,字符串里面的 整数
    # +1
    incr key        例 (incr num)
    # -1
    decr key        例 (decr num)
    
    # +整数
    incrby key increment              例 (incrby num 50)
    
    # -整数
    decrby key increment              例 (decrby num 50)

list

List类型是一个字符串列表,可以在列头或列尾添加/删除数据,在插入数据时,如果该键不存在,redis将为该键创建一个。

添加
      #lpush  左添加  (栈) 先进后出
      lpush  key  value     #例  lpush my_list a b c d
      
      #rpush  右添加   (队列)
      rpush  key  value     #例  rpush my_rlist a b c d
查看
      # lrange  key  start  stop  ,查看索引范围内元素的值
      例  查看所有
      lrange my_list 0 -1

     #查看位于lindex 位置上的元素 ,返回列表中元素的值。index从0开始,当index超出索引时返回null
      lindex key  index    #例 lindex my_list  3
获得list的元素个数
      llen key        #例  llen  my_list  
设置,修改数据
#指定索引号进行修改
lset key index value 
删除
  - lpop 删除左边第一个
        lpop key        #例 lpop  my_rlist

- rpop 删除右边第一个
      rpop key        #例 rpop  my_list
- lrem 删除指定
      rpush  test_list  a a b b c d e a d f m c
      #lrem  key count  value
      
      #count > 0 从左往右 删除数量为count的value
      例 : lrem test_list 2 a
      
      #count = 0 删除所有的 value
      例 : lrem test_list 0 a
      
      #count < 0 从右往左 删除数量为count的value
      例 : lrem test_list -1 b

hash

是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值

设置
      #  hset key field value
      #将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;
      例  user { name:jianeng}
      hset user name jianeng

      #设置多个
      #hmset key field value [field value]
      例  user{name:jianeng , age:18, sex:male }
      hmset user name jianeng age 18 sex male
获取
      #  hget key field
      例
      hget user name

      #获取多个
      # hmget key field field
      例
      hmget user name age
删除
      #  hdel key field
      例
      hdel user name
获取全部field value
      # hgetall key 
      例     itmes
      hgetall user
获取所有的field
      # hkeys key
      例      keys
      hkeys user
获取所有的value
      # hvals key 
      例     values  
      hvals user
获取field的个数
      # hlen key
      例    
      hlen user

set 集合

元素为string类型
无序集合
元素具有唯一性,不重复

设置
  # sadd key value [value]    (唯一,无序)
  #将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,
  例
  sadd my_set m n b v c x z b
获取
  # smembers key
  例
  smembers my_set
删除
  - srem指定删除
        # srem key member
        例
        srem my_set c
  - spop随机删除
        # spop  key
        例
        spop my_set
移动一个集合的值到另一个集合
      # smove oldkey newkey member
      例
      smove my_set my_set2 z
判断集合存在某个值
      # sismember key value
      例
      sismember my_set2 b   
交集
      # sinter key1 key2 ..
      例
      sinter my_set my_set2
  把 key1 key2的交集合并到newkey
      # sinterstore newkey key1 key2
      例
      sinterstore  new_set my_set my_set2
并集
      # sunion key1 key2 ...
      例
      sunion my_set my_set2
  把 key1 key2的并集合并到newkey
      # sunionstore newkey key1 key2
      例
      sunionstore new_set2 my_set my_set2
差集
      # sdiff key1 key2
      sdiff my_set my_set2
  把 key1 key2的差集合并到newkey
      # sdiffstore newkey key1 key2
      例
      sdiffstore new_set3 my_set my_set2
- 获取集合个数
      # scard key
      例
      scard my_set
- 随机返回一个
      # srandmember key
      例
      srandmember my_set

zset

类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。

设置
      # zadd key score member
      例
      zadd  my_zset 1 'one'
      zadd  my_zset 2 'two'
      zadd  my_zset 3 'three'
      zadd  my_zset 4 'four'
      zadd  my_zset 5 'five'
获取
  - zrange正序
        #zrange key start stop    (withscores)
        zrange my_zset 0 -1  withscores
  - zrevrange倒序
        #zrevrange key start stop
        zrevrange my_zset 0 -1  withscores
删除
      #zrem key member
      zrem my_zset two
索引
  - zrank正序
        # zrank key member
        例
        zrank my_zset three
  - zrevrank反序
        # zrevrank key member
        例
        zrevrank my_zset three
zcard 查看有序集合元素数
      # zcard key
      例
      zcard my_zset
zrangebyscore 返回集合中 score 在给定区间的元素
      # zrange my_zset 0 -1 withscores
      
       zrangebyscore my_zset 2 3 withscores
      #返回了 score 在 2~3 区间的元素
zcount 返回集合中 score 在给定区间的数量
      # zcount key min max
      例
      zcount my_zset 2 3
zscore : 查看score值
      # zscore key member
      例
      zscore my_zset two
zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
      # zrange my_zset 0 -1 withscores
      zremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
      # zrange my_zset 0 -1 withscores
      zremrangebyscore my_zset 3 5

Redis发布和订阅

#发布 
publish 频道 消息


# 订阅
subscribe 频道

设置密码

1. 先找到配置文件 
   cd  /etc/redis  
2. 修改redis.conf
   sudo vim redis.conf
   2.1 找到 requirepass --> 正常来说应该是在你的第396行 
    /requirepass  -->  vim 查找字符串
    # requirepass foobared  
   2.2 只需要更改 foobared  去掉注释
    requirepass 自己定义的密码
   2.3 保存退出
    :wq
3. 重启服务
   sudo service redis-server restart
4. redis-cli -- 先进去
   auth  自己密码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容