为什么缓存数据库更要首选redis?如何使用redis?

一、使用缓存数据库为什么首选用redis?

我们都知道,把一些热数据存到缓存中可以极大的提高速度,那么问题来了,是用Redis好还是Memcached好呢,以下是它们两者之间一些简单的区别与比较:

1. Redis不仅支持简单的k/v类型的数据,同时还支持list、set、zset(sorted set)、hash等数据结构的存储,使得它拥有更广阔的应用场景。

2. Redis最大的亮点是支持数据持久化,它在运行的时候可以将数据备份在磁盘中,断电或重启后,缓存数据可以再次加载到内存中,只要Redis配置的合理,基本上不会丢失数据。

3. Redis支持主从模式的应用。

4. Redis单个value的最大限制是1GB,而Memcached则只能保存1MB内的数据。

5. Memcache在并发场景下,能用cas保证一致性,而Redis事务支持比较弱,只能保证事务中的每个操作连续执行。

6. 性能方面,根据网友提供的测试,Redis在读操作和写操作上是略领先Memcached的。

从上面这些看出,Redis的优势比Memcached大,不过Memcached也还是有它用武之地的。要是只选择装其中一种的话,还是要首选Redis。

二、如何使用redis?

 

你一定要知道的是:redis的key名要区分大小写,在redis中除了 和空格外,其他的字符都可以做为key名,且长度不做限制,不过为了性能考虑,一般key名不要设置的太长。redis功能强大,支持数据类型丰富,以下是redis操作命令大全,基本上涵盖了redis所有的命令!

1、redis命令基本篇

1)、【 set key value 】 存入一个key和值。如:set myname reson

2)、【 get key 】 读取一个key的值。

3)、【 del key 】 删除一个key。

4)、【 del key1 key2 ... keyN 】 删除多个key。如:del myname1 myname2

5)、【 exists key 】 判断一个key是否存在。

6)、【 type key 】 查看key的类型。

7)、【 rename key keyNew 】 重命名key名。如:rename myname myname2

8)、【 dbsize 】 查看当前库中的key的条数。

9)、【 expire key time 】 指定key的过期时间,单位为秒。如:expire myname 9(设置9秒后过期)

10)、【 ttl key 】 查看redis有多长时间过期,单位为秒。

11)、【 keys * 】 列出当前库中所有的key名。

12)、【 keys a* 】 列出当前库中所有以字符串“a"开头的key。

13)、【 select db-index 】 选择一个数据库,如选择第一个数据库:select 0;选择第二个 select 1;默认有16个数据库,这个值可以在redis.conf中配置。

14)、【 flushdb 】 清掉当前库中所有的key(生产环境下需谨慎操作)。

15)、【 flushall 】 清掉所有库中全部的key(生产环境下需谨慎操作)。

16)、【 mset key1 value1 key2 value2 ... keyN valueN 】 一次性存入多个key和值。

17)、【 mget key1 key2 ... keyN 】 一次性读取多个key。

18)、【 incr key 】 可以对key类型+1的操作(相当于编程语言里面的++),只能操作number型,操作字符串会报错。可对新值进行操作。

19)、【 decr key 】 可以对key类型-1的操作(相当于编程语言里面的--),只能操作number型,操作字符串会报错。

20)、【 incrby key num 】 同incr,对key的值加num,比如 incrby aa 10,对aa+10。

21)、【 decrby key num 】 同上,对key的值减num。

22)、【 append key value 】 对指定key的字符串进行追加,如果key为整形,会被转为字符串。如aa的值为9,执行append aa 10后,会变成910。

23)、【 substr key start end 】 对key进行截取start到end个字符。如aa的值为:abcdef,执行substr aa 2 3后,返回“cd”。

2、redis链表类型(list)命令

24)、【 lpush key value 】 往队列头部插入一个元素

25)、【 rpush key value 】 从尾部插入一个元素

26)、【 lpop key 】 从队列头部删掉一个元素

27)、【 rpop key 】 从队列尾部删掉一个元素,并返回被删除元素的值

28)、【 llen 】 返回队列的长度,即里面有多少个元素。不存在key返回0,不为队列类型的key会返回报错。

29)、【 lrange key start end 】 返回队列从start到end之间的元素信息。

30)、【 ltrim key start end 】 截取一个队列,只保留指定区间内的元素。

3、redis无序集合set类型命令

31)、【 sadd key vaule 】 往集合中插入一个元素,如果value值已存在集合中,则返回0,不会被重复插入。

32)、【 sinter key1 key2 ... keyN 】 取出n个key之间的交集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sinter key1 key2返回d,e。

33)、【 sunion key1 key2 ... keyN 】 取出n个key之间的并集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sunion key1 key2返回a,b,c,d,e,f。

34)、【 sdiff  key1 key2 】 取出n个key之间的差集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sdiff key1 key2返回a,b,c;反过来sdiff key2 key1返回f。

35)、【 smembers key 】 返回key集合中所有的元素,结果是无序的。

36)、【 sismember key value 】 查看value这个值是否在key集合中。存在返回1,不存在返回0。

37)、【 scard key 】 返回集合中有多少个元素。

38)、【 smove key1 key2 value 】 把value从key1中移到key2中去。

39)、【 srem key value1 value2 ... valueN 】 从key集合中删掉某些元素。

4、redis有序集合sorted set命令

40)、【 zadd key v k 】 往key中添加一个元素,k为键,v为值。如:zadd artHits 99 12表示id为12的文章点击量为99次。

41)、【 zrange key start end 】 根据v的值由小到大进行排序来获得start到end之间的元素。

注:0表示第一个元素,-1表示最后一个元素,-2表示倒数第二个元素,以此类推,如果要获取第一个到倒数第三个之间的元素,命令为:zrange key 0 -3。

42)、【 zrevrange key start end 】 同上,根据v的值由大到小进行排序来获得start到end之间的元素。可以轻松取出点击量最高的前n篇文章。

43)、【 zremrangebyrank key start end 】 删除集合中的元素。排序的方式为按照v由小到大的顺序,如果要删除key集合中的第一个值,则运行 zremrangebyrank artHits 0 0;删除前3个值:zremrangebyrank artHits 0 2。

44)、【 zcard 】 返回key集合中元素的个数。

45)、【 zrank key k 】 返回值k在集合key中排第几位,是按照v由小到大的顺序。排第一名返回0,第二返回1,以此类推。

46)、【 zrevrank key k 】 同上,不同的是,按照v由大到小的顺序。可以轻松取出点击量最高的文章。

47)、【 zscore key k 】 取出集合key中键为k对应的值v。

48)、【 zrem key k 】 删除集合中指定元素。

49)、【 zincrby key num k 】 给集合key中的元素k加上num,值针对整型。比如 zincrby artHits 3 12,给id为12的文章加上3个点击量。此时zscore artHits 12的结果是99+3为102。

5、redis哈希hash类型命令

50)、【 hset key field value 】 设置hash field为指定值,如果key不存在,则先创建。

51)、【 hmset key field1 value1 ... fieldN valueN 】 同时设置多个值。

52)、【 hget key field 】  获取指定的hash field

53)、【 hmget key field1 field1 ... fieldN 】 获取指定的多个hash field

54)、【 hincrby key field num 】 将指定的hash field加上指定的值。

55)、【 hexists key field 】 查看指定field是否存在。

56)、【 hdel key field 】 删除指定的hash field。

57)、【 hlen key 】 返回指定hash中field的数量。

58)、【 hkeys key 】 返回hash所有的field。

59)、【 hvals 】 返回hash中所有的value。

60)、【 hgetall key 】 返回hash中所有的field和value。

redis 之相关命令的更多相关文章

  1. Redis的相关命令

    Redis的相关命令 redis程序的命令 /usr/bin/redis-benchmark /usr/bin/redis-check-aof /usr/bin/redis-check-rdb /us ...

  2. Redis key 相关命令

    其实本质上,Redis 就是一个Key---Value 数据库.这里我先介绍下Redis中关于的key的相关命令, 注意:key是字符串存储,但是不能使用 空格 或者 “\n”,value 则可以使用 ...

  3. redis连接相关命令

    命令名称:echo 语法:echo message 功能: 打印一个特定的信息message,测试时使用. 返回值: message自身 命令名称:ping 语法:ping 功能: 使用客户端向red ...

  4. redis底层相关命令(一)

    说明 用于分析redis底层数据结构以及内存情况 底层数据结构分析 1.查看key键的对象类型type key 本地:>sadd test1 本地:>type test1 set 2.查看 ...

  5. Redis集合相关命令

    1.无序集合集合的特性:①确定性②互异性③无序性redis的set是string类型的无序集合set元素最大可以包含(2^32-1)个元素 sadd key value1....valueN 将将元素 ...

  6. redis启动相关命令(Windows)

    一.安装redis:略 二.进入redis的安装目录,使用cmd 1.安装redis服务并加入window服务:redis-server --service-install redis.windows ...

  7. redis 库相关命令

    切换数据库: select 1 查看数据库大小:dbsize 清空数据库: flushdb

  8. redis Hash相关命令

  9. redis Set相关命令

随机推荐

  1. java如何导入Excel文件

    Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...

  2. 使用vuex管理数据

    src/vuex/store.js 组件里面使用引入store.js,注意路径 import store from 'store.js' 然后在使用的组件内data(){}同级放入store 三大常用 ...

  3. JavaWeb前端笔记

    day06 回顾: bootstrap: css框架,html/css/js集于一身,ie 6/7/8兼容有问题 开发响应式页面,使用于不同的上网设备 使用步骤: 1.导入bootstrap.css ...

  4. 12个非常不错的javascript类库

    Javascript是一个解释性的编程语言.最初作为浏览器的一部份在浏览器中运行,可以和用户交互,并且控制浏览器,异步通讯,修改显示的document.在这篇文章中,我们收集了12款最新的Javasc ...

  5. ArcGIS 从FileGDB中导出数据异常 000732

    错误代码:000732 产生原因:文件夹命名时起名为“xxx.gdb”,造成是系统识别异常.

  6. 使用adbWireless无线调试Android真机设备[转]

    开发Android的朋友都知道,真机调试需要把手机与PC相连,然后把应用部署到真机上进行安装和调试.长长的USB线显得很麻烦,而且如果需要USB接口与其他设备连接的话显得很不方便.今天介绍一种不通过U ...

  7. 测试发布(maven-assembly-plugin看好你哦)

    项目改成了maven管理,现场需要用增量补丁包的形式发布代码: 2015/4/21 以前试过用ant打补丁包,现在试试maven能不能做同样的事情: maven-assembly-plugin看着可以 ...

  8. IOS autosizing(设置控件的固定位置大小)

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  9. innobackupex 全备、增备脚本

    全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本: ...

  10. Miller-Rabbin 素性测试 和 Pollard_rho整数分解

    今天学习一下Miller-Rabbin  素性测试 和 Pollard_rho整数分解. 两者都是概率算法. Miller_Rabbin素性测试是对简单伪素数pseudoprime测试的改进. (ps ...