redis 基本操作
1. 什么是Redis
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,
Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
进入redis
redis-cli --raw
redis五种数据类型、及操作 (针对key) ,value都是字符串
- 
string字符串
- 
list列表
- 
hash哈希
- 
set集合
- 
sorted sets有序集合
string
#设置
set key value 例子:set test "Just do a test!"
# 获取
get key 例子:get test
# key是唯一的,不能用同一个key 不然就会覆盖
查看过期时间
# -1 表示永久 -2 表示 不存在
ttl key 例子:ttl test
设置过期时间
# 给已经存在 key,设置过期时间
expire key seconds 例子:expire test 12
# 设置 key的同时,设置过期时间
set key value ex seconds 例子:set test1 "ABC" ex 8
追加
# 给已有的value,再添加新的值
append key value 例子:append test1 "123"
设置 / 获取 多个
#设置多个 string
mset key value key value.. 例子:mset a1 "AAA111" b2 "BBBA222"
#获取多个 string
mget key key key ... 例子:mget a1 b2
key 操作 (针对所有的 key)
# 查看所有的key
keys * 例子: keys *
# 删除
del key 例子:del b1
# 查看key是否存在 ,存在返回 1, 不存在返回 0
exists key 例子: exists b1
# 查看key类型
type key 例子:type a1
运算
set num 1 # 自动识别,字符串里面的 整数 例子:
# +1
incr key 例 (incr num) 例子:set c3 12345
incr c3
# -1
decr key 例 (decr num) 例子:decr c3
# +整数
incrby key increment 例 (incrby num 50) 例子:incrby c3 6
# -整数
decrby key increment 例 (decrby num 50) 例子:decrby c3 6
list
- 
设置 
 # lpush 左添加 (栈), 后面来的 放第一个
 lpush key value 例子: lpush l1 "abc"
 
 #rpush 右添加 (队列) 后面来的 放最后一个
 rpush key value 例子: rpush l1 "123"
- 
查看 
 # lrange key start stop 例子: lrange l1 0 -1
 例 查看所有
 lrange key 0 -1
- 
获得list的元素个数 
 # llen key 例子:llen l1
- 
查看位于lidex 位置上的元素 
 # lindex key index 例子:lindex l1 0
- 
删除 - 
lpop删除左边第一个 (第一个)
 #rpush test2 d a b c u w y a b c y a b t c w t
 lpop key 例子:lpop test2
 
- 
- 
rpop删除右边第一个 (最后个)
 rpop key 例子:rpop test2
- 
lrem删除指定value 及 数量
 rpush test_list a b c w a b c a b c w
 # lrem key count value 例子:
 
 #count > 0 从左往右 删除数量为count的value (从上往下)
 例 : lrem test_list 2 a 例子:lrem test 1 c
 
 #count = 0 删除所有的 value
 例 : lrem test_list 0 a 例子:lrem test2 0 c
 
 #count < 0 从右往左 删除数量为count的value (从下往上)
 例 : lrem test_list -1 b 例子:lrange test2 -1 a
hash (类似与字典)
- 
设置 
 # hset key field value 例子:hset user name xlong
 例 user = { name:jianeng}
 hset user name jianeng
- 
获取 
 # hget key field 例子:hget user name
- 
删除 
 # hdel key field 例子:hdel user name
- 
设置多个 
 #hmset key field value [field value] 例子:hmset user1 name xlong age 26 sex nan
 例 user{name:jianeng , age:18, sex:male }
 hmset user name jianeng age 18 sex male
- 
获取多个 
 # hmget key field field 例子:hget user1 name age sex 
- 
获取全部 field value(类似与字典里的 items)
 # hgetall key 例子:hgetall user1
 例
 hgetall user 
- 
获取所有的 field(类似与字典里的 keys)
 # hkeys key 例子:hkeys user1 
- 
获取所有的 value(类似与字典里的 values)
 # hvals key 例子:hvals user1 
- 
获取 field的个数
 # hlen key 例子:hlen user1
set(集合)
- 
设置 
 # sadd key value [value] (唯一,无序) 例子:sadd tests1 q w e 1 2 3
 sadd tests2 w w w w 6 6 6 6(最终只有w 和6)
- 
获取 
 # smembers key 例子:smembers tests1
- 
删除 - 
srem指定删除
 # srem key member 例子:srem tests1 2
- 
spop随机删除
 # spop key 例子:spop tests1
 
- 
- 
移动一个集合的值到另一个集合 
 # smove oldkey newkey member 例子:smove tests1 tests2 3
- 
判断集合存在某个值 
 # sismember key value 例子:sismember tests2 w
- 
交集 
 # sinter key1 key2 .. 例子:sinter tests1 tests2把 key1 key2的交集合并到 newkey
 # sinterstore newkey key1 key2 例子:sinterstore tests3 tests1 tests2
- 
并集 
 # sunion key1 key2 ... 例子:sunion tests1 tests2把 key1 key2的并集合并到 newkey
 # sunionstore newkey key1 key2 例子:sunionstore tests4 tests1 tests2
- 
差集 
 # sdiff key1 key2 例子:sdiff tests1 tests2把 key1 key2的差集合并到 newkey
 # sdiffstore newkey key1 key2 例子:sdiffstore tests5 tests1 tests2
- 
获取集合个数 
 # scard key 例子:scard tests5
- 
随机返回一个 
 # srandmember key 例子:srandmember tests4
zset(有序集合)
- 
设置 
 # zadd key score member 例子: zadd testz1 1 a1a2a3
 zadd testz2 2 b1b2b3
 zadd testz3 3 c1c2c3
 例
 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 testz1 0 -1
 zrange my_zset 0 -1
- 
zrevrange倒序
 #zrevrange key start stop 例子:zrevrange testz2 0 -1
 zrevrange my_zset 0 -1
 
- 
- 
删除 
 #zrem key member 例子:zrem testz1 a1a2a3
 zrem my_zset two
- 
索引 - 
zrank正序 
 # zrank key member 例子:zrank testz2 b1b2b3
 例
 zrank my_zset three
- 
zrevrank反序 
 # zrevrank key member 例子:zrevrank testz2 b1b2b3
 例
 zrevrank my_zset three
 
- 
- 
zscore : 查看score值 
 # zscore key member 例子:zscore testz2 b1b2b3
 例
 zscore my_zset2 a 
- 
zincrby : 修改score值 
 # zincrby key score member 例子:zincrby testz2 2 b1b2b3
- 
zcard 查看有序集合元素数 
 # zcard key 例子:zcard testz2
 例
 zcard my_zset 
- 
zrangebyscore 返回集合中 score 在给定区间的元素 
 #返回了 score 在 2~3 区间的元素 例子:zrangebyscore testz2 21 23
 zrangebyscore my_zset 2 3 withscores
- 
zcount 返回集合中 score 在给定区间的数量 
 # zcount key min max 例子:zcount testz2 21 23
 例
 zcount my_zset 2 3
- 
zremrangebyrank : 删除集合中排名在给定区间的元素 
 # zrange my_zset 0 -1 withscores 例子:zremrangebyrank testz2 21 23
 zremrangebyrank my_zset 1 3
- 
zremrangebyscore : 删除集合中 score 在给定区间的元素 
 # zrange my_zset 0 -1 withscores 例子:zremrangebyscore testz1 0 2
 zremrangebyscore my_zset 1 2
Redis发布和订阅
#发布 publish 频道 消息 例子:publish qq1 "qq.com" # 订阅 subscribe 频道 例子:subscribe qq1 "hello"
 
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号