欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis基本操作

程序员文章站 2022-06-29 10:44:48
进入reids ##redis五种数据类型、及操作 string set key value 设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。 set name 'bear' get key 返回key的值,若key不存在则返回nil ​ mset key v ......

进入reids

redis-cli   

#不能进入,就安装:
sudo apt-get update
sudo apt-get install redis-server

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

 

##redis五种数据类型、及操作

 

字符串 string
列表 list
哈希 hash
集合 set
有序集合 sorted sets(zset)

 

string

string 类型是 redis 最基本的类型, string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。
  • set key value
    • 设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

    •  set name 'bear' 

  • get key

    • 返回key的值,若key不存在则返回nil

      mset key value [key value..]

    • 为多组key设置值,该操作为原子操作,要么一组都设置成功,要么一组都设置失败;

    • mset username 'root' password '123' name 'bear'

  • mget key [key...]

    • 返回一个或多个key的值,若key不存在返回nil,若key存在但不是字符串返回nil

    • mget username, password, name #有,号会被认为是key的一部分
      mget username password name

       

  • append key value
    • 将指定的值追加到key末尾,若key不存在,则创建并赋值,返回追加后的字符串长度

    •  append name bear 

 

  • ttl key
    • 返回key的剩余生存时间, -1 表示永久存在, -2表示不存在

 

  • set key value ex seconds
    • 设置 key的同时,设置过期时间(单位:秒) key 过期后将不再可用,会被系统自动删除。

    • set age 18 ex 20    
      或 setex key seconds value 例: ( setex sex 20 '男' )

       

  • persist key

    • 移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;


 

###全局key操作

  • rename key newkey 改名
    • 当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖;

    • keys *                  # 查看所有的key
      ​
      del key                 # 删除    返回成功的个数
      ​
      exists key              # 查看key是否存在  返回存在个个数
      ​
      type key                # 查看key类型
      ​
      expire key seconds      #设置过期时间 
         
      persist key             #移除过期时间
          
      flushdb                 #删除当前数据库中的所有key
      ​
      flushall                #删所有
      
      

 

list

 

列表的元素类型为string,
按照插入顺序排序
在列表的头部或者尾部添加元素
  • lpush key value[value...]

    • 在头部插入数据

    • lpush  key  value     #例  lpush my_list a b c d
    • 在尾部添加数据

    • rpush  key  value     #例  rpush my_rlist a b c d

 

  • lindex key index

    • 返回列表中元素的值。index从0开始,当index超出索引时返回null

    • lindex my_list 3    #查看第三个

  • lrange key start stop

    • 查看索引范围内元素的值

    • lrange my_list 0 -1     #查看所有值
  • llen key

    • 返回列表的长度

  • lset key index newvalue

    • 指定索引号进行修改

    •  lset my_list 0 'hello' 

  • 删除

    • lpop key 删除左边第一个

    • rpop my_list

    • rpop key 删除右边第一个

    • rpop my_list

    • lrem key count value

      • 删除指定数量的value值

      • rpush  test_list  c a a b b c  d e a d f m c
        ​
        #count > 0 从左往右 删除数量为count的value
        例 : lrem test_list 2 a
        lrange test_list 0 -1
        ​
        #count = 0 删除所有的 value
        例 : lrem test_list 0 d,              
        ​
        #count < 0 从右往左 删除数量为count的value
        例 : lrem test_list -2 c

hash

 

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

设置/修改

  • hset key field value

    • 将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;

    • hset user name bear        #user { name:bear}
  • hmset key field1 value1[field value...]

    • 同时设置多个

    • # user {name:bear , age:18}
      hmset user name bear age 18 

 

查看

  • hget key field

    • 获取value

    •  hget user name 
  • hmget key field[field...]

    • 获取多个value

    •  hmget user name age 
  • hvals key

    • 获取全部value

  • hkeys key

    • 获取所有的field

  • hgetall key

    • 获取全部fieldvalue

  • hlen key

    • 查看有几个键值对

  • hexists key field

    • 判断hash表中指定域是否存在,返回1,若key或field不存在则返回0;

删除

  • hdel key field

    • hdel user name

 


set​

 

 

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

 

  • sadd key member [member...] 增加元素

    • 将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,

    •  sadd my_set m n b v c x z b 

  • scard key

    • 返回集合key中元素的个数;

  • smembers key

    • 获取集合中所有元素

 

  • sismember key member 判断集合存在某个值

    • 判断member在key中是否已存在, 返回0或1

    •  sismember my_set b 

 

  • 删除

    • srem key member [member...]

      • 移除一个或多个元素,不存在的member会被忽略,返回被移除元素个数

      •  srem my_set a b n  
    • spop key 随机删除

      • 移除并返回集合中的一个随机元素,当key不存在时返回NULL

  • 交集

    # 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

     


 

zset

 

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

添加/修改

  • zadd key score member[ [score member] ..]

    • 设置, 存在就更新

    • zadd  my_zset 1 'one'
      zadd  my_zset 2 'tow'
      ​
      zadd  my_zset 10 one 20 two 30 three 40 four 50 'five'

查看

  • zscore key member

    • 查看score值

       zscore my_zset two 

  • zrange key start stop[withscores]

    • 按索引返回key的成员, withscores表示显示score

    •  zrange my_zset 0 -1 #显示全部 
  • zrangebyscore key min max

    • 返回集合中 score 在给定区间的元素

    •  zrangebyscore zset 10 30 

删除

  • zrem key member [member...]

    • 移除有序集合中的一个或多个元素,若member不存在则忽略;

    •  zrem my_zset two  

  • zremrangebyrank min max :

    • 删除集合中索引在给定区间的元素

    zremrangebyrank my_zset 1 3
  • zremrangebyscore min max :

    • 删除集合中 score 在给定区间的元素

    zremrangebyscore my_zset 10 30

 

redis配置

 

vim /etc/redis/redis.conf    #配置文件地址

port 6379                     # 默认端口    
logfile /var/log/redis.log      # 日志文件位置    
dbfilename dump.rdb         # RDB持久化数据文件名 ,  
dir /var/lib/redis            #指定本地数据库存放目录
bind 0.0.0.0                # 指定IP进行监听   

requirepass  yourpassword    #密码
    
save 900 1                #这三个是持久化,注释掉就关掉持久化
save 300 10
save 60 10000

启动/停止/重启命令

/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart

设置密码

config get requirepass        //获取当前密码
    #默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务
    
进入配置文件
    vim /etc/redis/redis.conf  
找到requirepass 设置密码
    vim 查找 /requirepass  按n查找下一个
    requirepass  yourpassword  //此处注意,行前不能有空格
重启redis
    redis-cli shutdown

进入在添加    auth 123456
登陆的时候加上密码 redis-cli -a 123456