经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » LinuxShell » 查看文章
redis 五大数据结构__常用命令
来源:cnblogs  作者:潮洋o  时间:2018/10/12 9:32:06  对本文有异议

linux 下下载redis数据库

  1. apt install redis

如果提示权限不够的话, 直接提权:

  1. sudo apt install redis-server

 

linux启用、停止服务

  1. service redis start
    service redis stop
    service redis restart

xshell进入linux

  1. cd .. # 返回根目录
  2. ls # 查看文件
  3. cd etc/

 

那么到这里,就该进入正题啦。

首先记录下连接、退出、切换数据库的命令

  1. 连接:redisredis-cli
  2. 退出:exit
  3. 切换数据库:select n

数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库(通过select n切换)

 

一直说redis有五大数据结构, 都有什么呢。

redis是key-value的数据结构,每条数据都是?个键值对

键的类型是字符串

注意:键不能重复

值的类型分为五种:

  String ------> 字符串

  Hash ------> 哈希

  List ------> 列表

  set ------> 集合

  Zset ------> 有序集合

 

现在我们就开始详细的看下每个数据类型常用的命令有哪些;

 

string类型

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

设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

  1. 设置数据:set key value
    设置多组数据:mset key value  [key value..]

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

 

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

  1. 查看数据:get key

 

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

  1. 追加数据:append key value

 

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

  1. ttl key

 

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

  1. set key value ex seconds

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

 

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

  1. persist key

 

这里追加一个命令:

  1. 进入数据库:user db_name;

    如果不知道数据库是否存在,记得加if exists

 

全局key操作

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

  1. rename key newkey 改名

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

复制代码
  1. keys * # 查看所有的key
  2. del key # 删除 返回成功的个数
  3. exists key # 查看key是否存在 返回存在个个数
  4. type key # 查看key类型
  5. expire key seconds #设置过期时间
  6. persist key #移除过期时间
复制代码

 

list类型

List类型是一个字符串列表,可以在列表头部或尾部添加/删除数据
在插入数据时,按照插入顺序排序,在列表的头部或者尾部添加元素,
如果该键并不存在,Redis将为该键创建一个。

  1. 添加数据:rpush key value [value…] 在尾部添加数据
         lpush key value [value…] 在头部添加数据

 

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

  1. lindex key index

  #查看第2个

 

查看索引范围内元素的值

  1. 查看数据:lrange key start stop

#查看所有值

 

返回列表的长度

  1. llen key

 

  1. 修改数据:lset key index value

指定索引号进行修改

 

  1. 删除数据:lpop key 删除左边第一个
  2. rpop key 删除右边第一个

 

Hash类型

是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表
     user                 { name:juhao,             age:18 }
user -> key(键)      name,age ->field(域)       juhao,18 ->value(值)

 

添加数据:

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

  1. hset key field value

 

查看域值:

  1. hget key field

 

批量添加:

  1. hmset key field value field2 value2

 

查看所有的value:

  1. hvals key

 

查看所有的field:

  1. hkeys key

 

# 获取多个 field

  1. hmget key field[field...]

 

# 获取全部`field` 和 `value

  1. hgetall key

 

 # 查看有几个键值对

  1. hlen key

 

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

  1. hexists key field

 

# 删除

  1. hdel key field

 



Set类型

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

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

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

 

# 返回集合key中元素的个数

  1. scard key

 

 # 获取集合中所有元素

  1. smembers key

 

 # 判断集合存在某个值

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

  1. sismember key member

 

 # 删除

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

  1. srem key member [member...]

 

# 随机删除

  1. spop key

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

 

 

zset类型

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

 

# 添加/修改

  1. zadd key score member[ [score member] ..]

设置, 存在就更新

 

 

# 查看

  1. zscore key member

查看score值

 

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

  1. zrange key start stop[withscores]

# 显示全部

  

 

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

  1. zrangebyscore key min max

 

# 删除

  1. zrem key member [member...]

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

 

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

  1. zremrangebyrank min max

 

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

  1. zremrangebyscore min max

 

 

写到这里,redis整理完毕,命令不要死记硬背,用多了自然就记住了。

就像大家写sql  ,新建 create table ;插入insert into; 查询 select * from 表 一样。

 

 

  1. 声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号