该知道的都知道,不知道的慢慢了解。redis数据库操作详解

一、简介:
redis数据库是一个基于内存存储的数据库,所以,redis数据库的访问速度极快,因此,redis数据库可以做缓存系统,redis数据库一般用于做分布式的集群,可以提高网站的响应速度,redis数据库的数据存储是用key-value形式存储的。

二、redis数据库优点:
1.redis数据库开源免费的。
2.redis数据库支持多种数据结构,比如:字符串、列表、哈希表、集合(有序集合和无序集合)。
3.支持原子操作、支持事务。
4.支持发布和订阅。
5.支持数据过期功能。
6.对数据有高可用性和可扩展性。

三、redis数据库和memcached数据库相比,区别是什么?

  1. redis和memcached都是基于内存存储的数据库。
  2. redis数据库可以用来存储数据,memcached用来做缓存。
  3. 对于redis数据库来说,存储的数据结构有多种,但是对于memcached数据库来说,存储的内容只能是字符串类型。
  4. memcached数据库和redis数据库相比,延迟要低一点。

四、redis数据库的安装及启动
1.安装:解压即可。
2.启动数据库: 在redis目录里cmd
(1)启动服务:redis-server redis.windows.conf 启动完不要关
(2)启动数据库:redis-cli
3.redis数据库默认端口号:6379

五、redis数据库操作
redis数据库默认有16个数据库【0-15】,默认进入的是0库。
select 数据库名 :切换数据库。
keys * :查看所有的键。
expire 键 秒数:设置过期时间。
persist 键:移除过期时间。
del 键:指定键进行删除。返回值代表删除的个数。
flushdb:清空当前数据库中的所有内容。
flushall:清空所有数据库的所有内容。
1.字符串的操作
(1)set key value:设置一个键值对,返回ok代表设置成功。如果对同一个key设置不同值,相当于修改。
(2)get key:获取对应键的值。

127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> set name wangwu
OK
127.0.0.1:6379> get name
"wangwu"

(3)setnx key value:设置一个键值对,如果键存在,不会覆盖,不存在则设置。

127.0.0.1:6379> setnx name laobian
(integer) 0
127.0.0.1:6379> get name
"wangwu"

(4)setex key 秒数 value:设置一个指定有效期的键值对。

127.0.0.1:6379> setex height 10 190
OK
127.0.0.1:6379> get height
"190"
127.0.0.1:6379> get height
(nil)

(5)setrange key 偏移量(索引) value :替换,从偏移量的位置开始替换,返回值是替换后的字符串的长度。

127.0.0.1:6379> setrange name 4 jiu
(integer) 7
127.0.0.1:6379> get name
"wangjiu"

(6)mset key1 value1 key2 value2……:批量设置键值对

127.0.0.1:6379> mset age 18 home haerbin job student
OK
127.0.0.1:6379> keys *
1) "home"
2) "age"
3) "name"
4) "job"

(7)mget key1 key2……:批量获取。

127.0.0.1:6379> mget home job
1) "haerbin"
2) "student"

(8)msetnx key1 value1 key2 value2……:批量设置键值对,如果键存在不会覆盖,不存在则创建。(批量设置的时候但凡有一个存在的其他不存在,也都不会创建)

127.0.0.1:6379> mget home weight
1) "haerbin"
2) (nil)
127.0.0.1:6379> msetnx weight 60 color yellow
(integer) 1
127.0.0.1:6379> mget weight color
1) "60"
2) "yellow"

(9)getset key new_value:获取key的原值,设置新值,返回值是原值。

127.0.0.1:6379> getset name yaohui
"wangjiu"
127.0.0.1:6379> get name
"yaohui"

(10)getrange key start end:获取指定范围(索引范围:[start,end])的内容

127.0.0.1:6379> getrange home 2 -1
"erbin"

(11)incr key:给对应键的值++,就是+1

127.0.0.1:6379> get age
"18"
127.0.0.1:6379> incr age
(integer) 19

(12)incrby key value :给对应键的值,加上指定的数

127.0.0.1:6379> incrby age 10
(integer) 29

(13)decr key :给对应键的值–,就是-1

127.0.0.1:6379> decr age
(integer) 28

(14)decrby key value:给对应键减去对应的值

127.0.0.1:6379> decrby age 10
(integer) 18

(15)append key value:给指定的键追加指定的值,返回值是增加后的总长度。

127.0.0.1:6379> append home daoliqu
(integer) 14
127.0.0.1:6379> get home
"haerbindaoliqu"

(16)strlen key:查看字符串的长度。

127.0.0.1:6379> strlen home
(integer) 14

2.redis数据库中的列表指令
redis数据库中的列表是双向链表结构,基于这种结构,redis数据库的列表可以实现栈和队列。
(1)lpush key value:在列表头部插入元素,返回值代表添加后的列表的长度。

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> lpush name zhangsan lisi wangwu maliu tianqi
(integer) 5

(2)lrange key start stop:查看列表中指定范围的元素。

127.0.0.1:6379[1]> lrange name 0 -1
1) "tianqi"
2) "maliu"
3) "wangwu"
4) "lisi"
5) "zhangsan

(3)rpush key value:在列表尾部插入元素

127.0.0.1:6379[1]> rpush name diaochan lvbu zhaoyun machao
(integer) 9
127.0.0.1:6379[1]> lrange name 0 -1
1) "tianqi"
2) "maliu"
3) "wangwu"
4) "lisi"
5) "zhangsan"
6) "diaochan"
7) "lvbu"
8) "zhaoyun"
9) "machao"

(4)lpop key:从头部弹出一个元素,返回值是删除的元素

127.0.0.1:6379[1]> lpop name
"tianqi"
127.0.0.1:6379[1]> lrange name 0 -1
1) "maliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "diaochan"
6) "lvbu"
7) "zhaoyun"
8) "machao"

(5)rpop key:从尾部弹出一个元素,返回值是删除的元素

127.0.0.1:6379[1]> rpop name
"machao"
127.0.0.1:6379[1]> lrange name 0 -1
1) "maliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "diaochan"
6) "lvbu"
7) "zhaoyun"

(6)linsert key BEFORE|AFTER 值 新值:在原有元素之前或之后插入一个元素,返回值是插入之后的列表的长度。

127.0.0.1:6379[1]> linsert name before diaochan zhaosier
(integer) 8
127.0.0.1:6379[1]> lrange name 0 -1
1) "maliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "zhaosier"
6) "diaochan"
7) "lvbu"
8) "zhaoyun"

(7)lset key 索引 新值:修改指定索引位置上的元素。

127.0.0.1:6379[1]> lset name 2 lisisi
OK
127.0.0.1:6379[1]> lrange name 0 -1
1) "maliu"
2) "wangwu"
3) "lisisi"
4) "zhangsan"
5) "zhaosier"
6) "diaochan"
7) "lvbu"
8) "zhaoyun"

(8)lrem key count 值:从key中删除指定数量的元素。
count>0 代表头部删除
count<0 代表尾部删除
count=0 代表全部删除

127.0.0.1:6379[1]> lpush name lisisi lisisi lisisi
(integer) 11
127.0.0.1:6379[1]> lrange name 0 -1
 1) "lisisi"
 2) "lisisi"
 3) "lisisi"
 4) "maliu"
 5) "wangwu"
 6) "lisisi"
 7) "zhangsan"
 8) "zhaosier"
 9) "diaochan"
10) "lvbu"
11) "zhaoyun"
127.0.0.1:6379[1]> lrem name 2 lisisi
(integer) 2
127.0.0.1:6379[1]> lrange name 0 -1
1) "lisisi"
2) "maliu"
3) "wangwu"
4) "lisisi"
5) "zhangsan"
6) "zhaosier"
7) "diaochan"
8) "lvbu"
9) "zhaoyun"

(9)ltrim 键 start end:保留[start,end]范围内的元素,或者删除[start,end]范围外的元素。

127.0.0.1:6379[1]> itrim name 6 8
(error) ERR unknown command 'itrim'
127.0.0.1:6379[1]> ltrim name 6 8
OK
127.0.0.1:6379[1]> lrange name 0 -1
1) "diaochan"
2) "lvbu"
3) "zhaoyun"

(10)lindex 键 索引 :查看指定索引上的元素

127.0.0.1:6379[1]> lindex name 1
"lvbu"

(11)llen 键:查看列表的长度

127.0.0.1:6379[1]> llen name
(integer) 3

(12)rpoplpush key1 key2 :从key1的尾部删除元素,将删除的元素添加到key2的头部,返回值是删除的元素。

127.0.0.1:6379[1]> rpoplpush name name2
"zhaoyun"
127.0.0.1:6379[1]> lrange name 0 -1
1) "diaochan"
2) "lvbu"
127.0.0.1:6379[1]> lrange name2 0 -1
1) "zhaoyun"
127.0.0.1:6379[1]>  

3.redis数据库中的无序集合
集合是没有重复元素的
(1)sadd key member1 member2……:向集合中插入多个元素,返回值是插入成功的元素数量。
(2)smembers key:查看集合中的元素数量。

127.0.0.1:6379[1]> select 2
127.0.0.1:6379[2]> sadd name aa bb cc dd
(integer) 4
127.0.0.1:6379[2]> smembers name
1) "cc"
2) "aa"
3) "dd"
4) "bb"

(3)srem key value1 value2……:指定成员进行删除,返回值是删除成功的元素数量。

127.0.0.1:6379[2]> srem name bb cc
(integer) 2
127.0.0.1:6379[2]> smembers name
1) "aa"
2) "dd"

(4)spop key 【count】:从集合中随机弹出count个元素,默认弹出1个 ,返回值是弹出的元素。

127.0.0.1:6379[2]> spop name 2
1) "aa"
2) "dd"
127.0.0.1:6379[2]> smembers name
(empty list or set)

(5)srandmember key [count]:随机获取count个元素,默认获取一个,返回值是获取的元素。

127.0.0.1:6379[2]> sadd name aa bb cc dd ee ff gg hh ii jj kk ll mm nn
(integer) 14
127.0.0.1:6379[2]> smembers name
 1) "ee"
 2) "ll"
 3) "bb"
 4) "gg"
 5) "ii"
 6) "cc"
 7) "aa"
 8) "ff"
 9) "hh"
10) "mm"
11) "kk"
12) "nn"
13) "dd"
14) "jj"
127.0.0.1:6379[2]> srandmember name 2
1) "ll"
2) "dd"

(6)smove key1 key2 value :将key1中的value移动到key2中。

127.0.0.1:6379[2]> smove name name2 bb
(integer) 1

(7)scard key:查看集合长度。

127.0.0.1:6379[2]> scard name
(integer) 13
127.0.0.1:6379[2]> scard name2
(integer) 1

(8)sdiff key1 key2 :查看两个集合中的差集。以key1为基准

127.0.0.1:6379[2]> sdiff name name2
 1) "ee"
 2) "ll"
 3) "ii"
 4) "gg"
 5) "cc"
 6) "aa"
 7) "ff"
 8) "hh"
 9) "kk"
10) "mm"
11) "nn"
12) "jj"
13) "dd"

(9)sinter key1 key2:查看两个集合的交集。

127.0.0.1:6379[2]> sinter name name2
(empty list or set)

(10)sunion key1 key2 :查看两个集合的并集。

127.0.0.1:6379[2]> sunion name name2
 1) "ee"
 2) "ll"
 3) "bb"
 4) "ii"
 5) "gg"
 6) "cc"
 7) "aa"
 8) "ff"
 9) "hh"
10) "kk"
11) "mm"
12) "nn"
13) "jj"
14) "dd"

(11)sismember key value:判断value是否在集合中存在,返回值1代表存在,0代表不存在。

127.0.0.1:6379[2]> sismember name zz
(integer) 0

你可能感兴趣的:(redis)