搜档网
当前位置:搜档网 › 黑马程序员:为什么更要用redis,应该如何使用redis

黑马程序员:为什么更要用redis,应该如何使用redis

黑马程序员:为什么更要用redis,应该如何使用redis
黑马程序员:为什么更要用redis,应该如何使用redis

为什么缓存数据库更要首选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。

相关主题